value
가 타입 T
에 속한다는 사실을 원소 value
가 집합 T
에 속한다(value ∈ T
)는 사실에 대응해 생각해보자. 예를 들어, true
라는 원소가 Boolean
이란 집합에 속한다는 식으로 말이다. 이런 관점으로 타입스크립트의 내장 타입 number
와 type Binary = 0 | 1
두 타입을 바라보면 아래와 같은 대응 관계들이 성립한다.0
은 타입 number
에 속한다.0
이 집합 number
에 속한다.0
은 number
와 Binary
두 타입에 모두 속한다.Binary
타입의 모든 값(0
, 1
)은 number
타입의 값이기도 하다. 즉 Binary
는 number
의 서브타입이다.Binary
의 모든 원소는 number
의 원소이기도 하다. 즉 Binary
는 number
의 부분집합이다.{ binary: Binary, num: number }
{ (binary, num) | binary ∈ Binary, num ∈ number }
never
가 존재한다. never
는 모든 타입의 서브타입이다.Ø
가 존재한다. Ø
는 모든 집합의 부분집합이다.x
가 집합 S
에 속한다. (x ∈ S
)x
는 S
타입에 속한다. (혹은 S
타입을 값 x
에 할당할 수 있다.)T
가 집합 S
의 부분집합이다. (T ⊂ S
)T
가 타입 S
의 서브타입이다.S’ = { (x, y) | x ∈ S, y ∈ S }
)Ø
이 존재한다.A
타입의 모든 값은 Union
타입의 값이다.B
타입의 모든 값은 Union
타입의 값이다.A
의 모든 원소는 집합 Union
의 원소이다.B
의 모든 원소는 집합 Union
의 원소이다.Union
은 타입 시스템에서 합집합 A ∪ B
를 표현하는 수단이다! 유니온 타입이 합집합이라는 의미의 유니온(union)이라는 이름을 가진 건 우연이 아니다.Intersection
타입의 모든 값은 A
타입의 값이다.Intersection
타입의 모든 값은 B
타입의 값이다.Intersection
의 모든 원소는 집합 A
의 원소이다.Intersection
의 모든 원소는 집합 B
의 원소이다.A ∩ B
의 정의이다. 인터섹션 타입은 타입 시스템이 여러 타입 간의 교집합을 표현하는 수단이다. 짐작했겠지만, 인터섹션(intersection)은 수학에서 교집합이라는 의미를 갖는다.A
에 대한 집합 B
의 차집합 B - A
는 다음 조건을 만족하는 집합으로 정의한다.A
에는 속하고 집합 B
에는 속하지 않는 모든 원소는 집합 B - A
의 원소이다.A
와 B
에 동시에 속하는 모든 원소는 집합 B - A
의 원소가 아니다.Exclude
제너릭을 이용해 차집합을 나타낼 수 있다.B
타입에 할당 불가능한 A
타입의 값은 모두 Exclude<A, B>
에 할당 가능하다.A & B
타입의 값은 모두 Exclude<A, B>
에 할당 불가능하다.Exclude
제너릭에 대해선 7장에서 보다 자세히 다룰 것이다.