색칠한 부분이 string | number입니다. string과 number의 합집합만큼의 영역을 차지합니다.
교집합을 나타내는 연산자도 있습니다. & 연산자입니다. & 연산자를 인터섹션(intersection) 연산자라고 부릅니다.
string과 number에서 겹치는 부분은 교집합 영역입니다. 그런데 string이면서 number인 값이 있을 수 있을까요? 존재하지 않습니다. 원소가 존재하지 않는 집합은 공집합이라고 부릅니다. 타입스크립트에서는 never가 그 역할을 맡습니다.
type nev = string & number;
// type nev = never
이처럼 타입스크립트의 타입을 집합 관계로 볼 수 있습니다. 타입스크립트에서 전체집합은 unknown입니다. 벤다이어그램에서 가장 넓은 영역을 차지하고 있으므로 가장 넓은 타입이라고 말할 수 있습니다. 반대로 never는 공집합이므로 가장 좁은 타입입니다.
정리하면 전체집합은 unknown으로, 공집합은 never로 생각할 수 있고, &은 교집합, |는 합집합이 되는 것입니다.