
1. 타입은 집합이다


- 20 number literal type 집합은 numbertype의 부분집합임.

- 부분집합이기 때문에 아래와 같은 계층을 이룸




업 캐스팅과 다운 캐스팅

- 업캐스팅: 작은 타입의 값을 큰 타입에 할당하는 것
: **모든**
상황에 가능함
- 다운 캐스팅: 큰 타입의 값을 작은 타입에 할당하는 것
: 대부분의 상황에 불가능함



2. unknown 타입은 전체집합이다.
- unknown타입은 업캐스팅 경우에는 가능하지만 다운캐스팅은 불가능함. 즉 큰 집합 안에 작은 집합을 할당하는 것은 가능하나, 작은 집합 안에 큰 집합을 할당하면 논리적으로 맞지 않음.

3. never 타입은 공집합이다.
- 모든 집합의 부분집합에 속하는 집합은? 공집합.
- 네버 타입에는 다운캐스팅 되는 것이기 때문에 아무런 값도 저장할 수 없게 되는 것임.

4. void 타입은 undefined의 수퍼타입이기 때문에 undefined를 포괄함.
function voidExam() {
function voidFunc(): void {
console.log("hi");
}
let voidVar: void = undefined;
}
5. any 타입은 치트키임. 그래서 타입계층도를 무시함.

- any타입은 모든 타입의 슈퍼타입으로 위치하기도 하고, 반대로 모든 타입의 서브타입으로 위치하기도 함. 단, never만 제외함.
- 따라서 any타입은 치트키지만 never타입으로 다운캐스팅만 할 수 없다. 알아두기
- any타입은 타입계층도를 무시하기 때문에 쓰지 않는 것을 권장함.
타입 계층도와 타입 호환표 이해하기.

