2025-07-27 20:14

Status:

Tags: 타입스크립트 리액트 넥스트 자바스크립트

타입은 집합이다

타입은 계층구조를 이루는 집합이다. unknown은 전체 집합이고 never는 공집합인 식이다. unknown은 전체 집합이니 어디서나 사용할 수 있고 never는 공집합이니 어디서도 사용할 수 없는 식으로 타입의 호환 관계가 결정된다.

집합의 포함관계에서 업캐스팅 다운캐스팅 등으로 확장된다. 예컨대 number라는 타입과 10 이라는 리터럴 타입이 있다고 하면 number 타입에 10은 들어갈 수 있지만(업캐스팅) 그 반대(다운캐스팅)는 불가능하다. 단, any는 any는 치트키라 어디서나 업캐스팅, 다운캐스팅 가능하다.

위와같은 포함관계는 단순히 기본타입 뿐만 아니라 객체와 함수에서도 적용할 수 있다. 다만 함수의 경우 포함관계가 직관적이지 않으므로 아래 정리에서 함수 타입의 호환성 확인 반환값과 매개변수 갯수는 직관적인 업캐스팅으로 이해 가능 매개변수의 경우 타입은 오히려 더 좁아야 더 많은 기능을 포함. 매개변수가 더 큰 함수의 경우 매개변수에서 존재할 수 없는 값 기대할 수 있음

시간 지나고 다시 보니까 또 헷갈리는데 사실 실무에서 크게 의미있는 부분은 아니라 그냥 함수끼리의 포함관계에서는 매개변수 타입은 한번 더 반대로 생각하자 정도로 넘어가도 될듯

섹션 4. 함수와 타입 https://ts.winterlood.com/267b10cd-5f23-4689-b2f4-0b7420523a64

References

타입스크립트 치트 시트 한입 TS