2025-07-27 20:14
Status:
타입은 집합이다
타입은 계층구조를 이루는 집합이다.
unknown은 전체 집합이고 never는 공집합인 식이다.
unknown은 전체 집합이니 어디서나 사용할 수 있고
never는 공집합이니 어디서도 사용할 수 없는 식으로 타입의 호환 관계가 결정된다.
집합의 포함관계에서 업캐스팅 다운캐스팅 등으로 확장된다.
예컨대 number라는 타입과
10
이라는 리터럴 타입이 있다고 하면
number 타입에 10
은 들어갈 수 있지만(업캐스팅) 그 반대(다운캐스팅)는 불가능하다.
단, any는 any는 치트키라 어디서나 업캐스팅, 다운캐스팅 가능하다.
위와같은 포함관계는 단순히 기본타입 뿐만 아니라 객체와 함수에서도 적용할 수 있다. 다만 함수의 경우 포함관계가 직관적이지 않으므로 아래 정리에서 함수 타입의 호환성 확인 반환값과 매개변수 갯수는 직관적인 업캐스팅으로 이해 가능 매개변수의 경우 타입은 오히려 더 좁아야 더 많은 기능을 포함. 매개변수가 더 큰 함수의 경우 매개변수에서 존재할 수 없는 값 기대할 수 있음
시간 지나고 다시 보니까 또 헷갈리는데 사실 실무에서 크게 의미있는 부분은 아니라 그냥 함수끼리의 포함관계에서는 매개변수 타입은 한번 더 반대로 생각하자 정도로 넘어가도 될듯
섹션 4. 함수와 타입 https://ts.winterlood.com/267b10cd-5f23-4689-b2f4-0b7420523a64