더북(TheBook)

다만 현재 코드에서 차집합과 대칭차집합은 객체에만 적용 가능합니다. 유니언에는 적용되지 않습니다. 유니언에서 대칭차집합을 적용하려면 다음과 같이 수정해야 합니다.

type SymDiffUnion<A, B> = Exclude<A | B, A & B>;
type R3 = SymDiffUnion<1 | 2 | 3, 2 | 3 | 4>;
// type R3 = 1 | 4

 

Exclude

Exclude는 어떤 타입(A | B)에서 다른 타입(A & B)을 제거하는 타입입니다(이 타입도 3.2절에서 구현 원리에 대해 배웁니다).

부분집합은 이미 배웠습니다. AB 타입에 대입 가능하면 AB의 부분집합이라는 의미입니다.

type IsSubset<A, B> = A extends B ? true : false;
type R1 = IsSubset<string, string | number>;
// type R1 = true
type R2 = IsSubset<{ name: string, age: number }, { name: string }>;
// type R2 = true
type R3 = IsSubset<symbol, unknown>; 
// type R3 = true
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.