Diff
Diff 타입을 조금 응용하면 대칭차집합도 찾아낼 수 있습니다. 예를 들어 { name: string, age: number }를 { name: string, married: boolean }과 대칭차집합하면 { age: number, married: boolean }이 나와야 합니다. 서로 겹치지 않는 부분을 합쳐놓은 것입니다. 합집합에서 교집합을 뺀 것이라고 볼 수도 있습니다.
▲ 그림 2-6 대칭차집합
type SymDiff<A, B> = Omit<A & B, keyof (A | B)>;
type R2 = SymDiff<{ name: string, age: number }, { name: string, married: boolean }>;
// type R2 = { age: number, married: boolean }