Book/Effective Typescript

Item 7. 타입이 값들의 집합이라고 생각하기

Alraffe 2023. 2. 14. 00:46

 

이번 아이템을 읽으면서 가장 충격적이였던 코드.

 

타입 PersonSpan은 Person과 Lifespan의 교집합이 아니라 합집합이다.

지금 생각해보면 당연할 수 있는데 처음에 보자마자 당연하게 교집합이라고 생각했다.

 

interface Person {
  name: string;
}
interface Lifespan {
  birth: Date;
  death?: Date;
}
type PersonSpan = Person & Lifespan;
const ps: PersonSpan = {
  name: 'Alan Turing',
  birth: new Date('1912/06/23'),
  death: new Date('1954/06/07'),
};  // OK

왜냐하면 위에서 type연산자는 속성이 아닌 값의 집합에 적용되기 때문이다.

 

 

기억하자.

keyof (A&B) = (keyof A)|(keyof B);
keyof (A|B) = (keyof A) & (keyof B);

 

 

 

더보기

 

제목 : 이펙티브 타입스크립트 : 동작 원리의 이해와 구체적인 조언 62가지

출판사 : 오랠리

지은이 : 댄 밴더캄

발행 : 2쇄 21년 11월 4일