

타입스크립트의 "타입"은 여러 개의 값을 포함하는 "집합" 이다.
위 그림처럼 여러개의 숫자 값을 묶어놓은 집합을 number 타입이라고 한다.
오직 하나의 값만 포함하는 타입을 말한다.

예를 들어 Number Literal 타입은 값 20 만을 집합으로 함을 의미한다.
즉, 20만을 값으로 취급한다.

이 20이라는 타입에 속하는 요소인 20은 Number 타입에도 속할 수 있다.
다시 말해 Number Literal 타입은 Number 타입에 속한다.

타입 호환성이란 A타입의 값을 B 타입으로 취급해도 괜찮은지 판단하는 것을 말한다.

이처럼 타입스트립트에서의 타입은 계층 관계를 가진다.

이는 마치 정사각형과 직사각형의 관계와 비슷하다.
정사각형은 직사각형이 될 수 있지만 직사각형은 정사각형이 될 수 없다.

업 캐스팅은 허용한다.
서브타입(Number Literal)의 값을 슈퍼타입(Number)의 값으로 할당하는 것
다운캐스팅은 허용하지 않는다.
슈퍼타입(Number)의 값을 서브타입(Number Literal)의 값으로 할당하는 것
단 any 타입은 never 타입을 제외하고
업 캐스팅및다운 캐스팅모두 지원한다.