타입호환이란 ?
타입 호환이란 타입스크립트 코드에서 특정 타입이 다른 타입에 잘 맞는지를 의미한다.
구조적 타이핑 예시
구조적 타이핑이란 코드 구조 관점에서 타입이 서로 호환되는지의 여부를 판단하는 것이다.
위 코드에서 capt가 hero 타입에 호환될 수 있는 이유는 capt의 속성 중에 name이 있기 때문이다 Avengers인터페이스에서 name 속성을 갖고 있기 때문에 capt는 Avengers 타입에 호환될 수 있다.
함수를 호출할 때도 마찬가지이다 capt변수에 이미 name 속성 뿐만 아니라 location 속성도 있기 때문에 assemble 함수의 호출 인자로 넘길 수 있다.
Soundness란 ?
타입스크립트는 컴파일 시점에 타입을 추론할 수 없는 특정 타입에 대해서 일단 안전하다고 보는 특성이 있다 이러한 특징을 들리지 않는다(Soundness) 라고 표현한다.
Enum 타입 호환 주의 사항
- Enum 타입은 number 타입과 호환되지만 Enum 타입끼리는 호환되지 않는다.
Class 타입 호환 주의 사항
- 클래스 타입은 클래스 타입끼리 비교할 때 스태틱 멤버와 생성자를 제외하고 속성만 비교한다.
Generics
제네릭은 제네릭 타입 간의 호환 여부를 판단할 때 타입 인자 <T>가 속성에 할당되었는지를 기준으로 한다.
위 인터페이스는 일단 속성이 없기 때문에 x와 y는 같은 타입으로 간주된다.
위 예제는 인터페이스 NotEmpty에 넘긴 제네릭 타입 <T>가 data속성에 할당되었으므로 x와 y는 서로 다른 타입으로 간주된다.
'타입스크립트' 카테고리의 다른 글
[Typescript] - const assertion ( + enum) (0) | 2022.09.15 |
---|---|
[TypeScript] - 화살표 함수에서 제네릭 사용 방법 (0) | 2022.08.23 |
[TypeScript] - 타입 추론 (0) | 2022.07.17 |
[TypeScript] - 제네릭 (0) | 2022.07.05 |
[TypeScript] - 연산자를 이용한 타입 정의 (0) | 2022.03.30 |