더북(TheBook)

2.29.2 집합 관련 타입 만들기

타입스크립트의 타입은 집합으로 생각해도 될 정도로 집합의 원리를 충실하게 따르고 있습니다. 다양한 집합의 연산, 특성을 타입으로 나타내봅시다.

앞에서 배운 집합이 있습니다. 이전 장에서 전체집합은 unknown이고, 공집합은 never라는 것을 배웠습니다. 합집합과 교집합 또한 이전 절에서 배웠던 대로 각각 | 연산자와 & 연산자를 사용하면 되므로 넘어가겠습니다.

이어서 차집합을 만들어보겠습니다. 예를 들어 A{ name: string, age: number }, B{ name: string, married: boolean }인 경우 둘을 차집합(A - B)하면 { age: number }가 나와야 합니다.
B - A의 경우에는 { married: boolean }이어야 합니다.

type Diff<A, B> = Omit<A & B, keyof B>;
type R1 = Diff<{ name: string, age: number }, { name: string, married: boolean }>;
// type R1 = { age: number }
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.