슈퍼 타입(부모), 서브타입(자식)
ex) Number타입(부모) - Number 리터럴 타입(자식)
특정 타입의 값을 다른 타입으로 취급해도 괜찮은지 판단하는 것
타입 간의 슈퍼-서브 관계를 기준으로 판단됨
슈퍼타입 -> 서브타입 (다운캐스팅)
슈퍼타입 <- 서브타입 (업캐스팅)
업캐스팅 가능
다운캐스팅은 불가능
1. Unknown 타입 - 전체 집합, 모든 타입의 값을 저장할 수 있음
언제 사용할 수 있을까?
- 현재 정확한 타입을 알기 어려울 때 사용!
- 타입 좁히기와 함께 값을 유연하게 사용 가능. 타입 좁히기? Typeof로 조건문
2. Never 타입 - 공집합, 모든 타입의 변수에 저장 가능, 어떤 타입의 값도 저장할 수 없음
언제 사용할 수 있을까?
- 호출되지 않아야 하는 함수를 만들 때
- Switch의 완전성을 보장하기 위해 활용 가능
3. Any 타입 (치트키) - 타입 검사를 받지 않음, 예외적으로 Never 타입의 변수에는 저장 불가
언제 사용할 수 있을까?
- 불가능한 타입 단언을 가능케 할 수 있음, -> unkown을 이용해도 가능함
++Quiz
Type a = never & string 공집합과 string의 교집합 -> never
Type b = never | string 공집합과 string의 합집합 -> string
Type c = unknown & string 전체집합과 string의 교집합 -> string
Type d = unkown | string. 전체집합과 string의 합집합 -> unknown