타입스크립트의 타입 시스템
& 연산자는 두 타입의 인터섹션(교집합)을 계산합니다
Person 과 LifeSpan 인터페이스를 PersonSpan 이라는 타입으로 합친것 입니다.
위 사진에서 보시다시피 LifeSpan 인터페이스에 정의된 birth 가 없다고 에러가 나고있습니다.
즉 교집합중 하나라도 부족하면 타입스크립트는 이를 알려줍니다.
&연산자보다 조금더 일반적으로 타입을 선언하는방법은 다음과 같습니다.
extends의 의미는 "~에 할당 가능한" 또는 "~의 부분 집합" 이라는 의미입니다. 따라서 Person의 부분집합인 PersonSpan의 타입은 모두 name 속성을 가져야하며 birth 속성도 제대로 갖춰야 제대로된 부분집합이 완성이 됩니다.
extends 키워드는 TypeScript에서 제네릭 타입의 제한을 설정하는데에도 사용됩니다.
위의 함수에서 <K extends string> 은 K 가 string 의 서브타입이 되어야 한다는 뜻입니다. 이렇게 제네릭에 타입을 제한함으로써 함수를 호출할때 key 값으로 전달되는 매개변수가 반드시 string 타입이어야된다는것을 보장 할 수 있습니다.
타입을 여러개 묶은 유니온 타입.
AB12 엔 "C" 가 정의되어있지않아 타입스크립트가 이를 알려주고있습니다.