타입은 집합이다!!!
타입스크립트의 '타입'은 사실 여러개의 값을 포함하는 '집합'이다. (집합 : 동일한 속성을 갖는 여러 개의 요소들을 하나의 그룹으로 묶은 단위)
아래 사진처럼 여러개의 숫자 값들을 묶어놓은 집합 -> number 타입이라고 정의

슈퍼타입(부모타입) : 다른 타입을 포함하는 더 큰 타입
서브타입(자식타입) : 다른 타입에 포함되고 있는 작은 타입
아래 사진은 number 타입과 number literal 타입의 관계이다.


: 어떤 타입을 다른 타입으로 취급해도 괜찮은지 판단하는 것
아래 사진처럼 Number 타입과 Number Literal 타입이 있을 때 서브 타입인 Number Literal 타입의 값을 슈퍼 타입인 Number 타입의 값으로 취급하는 것은 가능하지만 반대로는 불가능하다.

let num1: number = 10;
let num2: 10 = 10;
num1 = num2; //가능 (업 캐스팅)
let num1: number = 10;
let num2: 10 = 10;
num2 = num1; //불가능 (다운 캐스팅)
업 캐스팅 : 서브 타입의 값을 슈퍼 타입의 값으로 취급하는 것 (대부분 가능)
다운 캐스팅 : 슈퍼 타입의 값을 서브 타입의 값으로 취급하는 것 (대부분 불가능)
좋은 글이네요. 공유해주셔서 감사합니다.