타입 호환성 (Type Compatibility)
서브 타입(1)
1 | // sub1 타입은 sup1 타입의 서브 타입이다. |
서브 타입(2)
1 | // sub4 타입은 sup4 타입의 서브 타입이다. |
1. 같거나 서브 타입인 경우, 할당이 가능하다. => 공변
1 | // primitive type |
2. 함수의 매개변수 타입만 같거나 슈퍼타입인 경우, 할당이 가능하다 => 반병
1 | class Person {} |
타입 별칭(Type Alias)
- Interface랑 비슷해 보인다
- Primitive, Union Type, Tuple, Function 같이 여러번 똑같이 쓰는것보다는 이름을 붙여 설정하고 사용하는 방식
- 기타 직접 작성해야하는 타입을 다른 이름을 지정할 수 있습니다
- 만들어진 타입의 refer로 사용하는 것이지 타입을 만드는것은 아니다
Aliasing Primitive
1 | type MyStringType = string; |
Aliasing Union Type
1 | let person: string | number = 0; // 매번 string | number를 지정하기 힘들다 |
Aliasing Tuple
1 | let person: [string, number] = ['Mark',35] |
Aliasing Function
1 | type EatType = (food: string) => void; |