이전 조건부 타입에서 string과 number 타입을 서로 뒤바꾸는 타입을 정의한 적이 있다.
그 타입에 아래와 같이 유니온 타입을 지정하니 출력되는 타입도 유니온 타입이 되었다.
이 특징이 이번에 정리할 조건부 타입의 분산성이다.
StringNumberSwitch 타입은 T에 들어온 타입이 number 타입을 확장하고 있으면 string, 그렇지 않으면 number 타입으로 변환해준다.
그렇다면 T가 number | string과 같이 유니온 타입으로 되어 있을 경우 number 타입에 확장되지 않기 때문에 number 타입이 도출돼야할 것 같다.
하지만, 조건부 타입의 분산 특징 때문에 타입 정의가 다음과 같이 이루어진다.
과정을 살펴보면 T에 정의된 유니온 타입이 각각 분산되어 타입 스위치가 일어나고 이후에 다시 유니온 타입으로 묶이는 과정이 진행된다.
이러한 조건부 타입의 분산 특징을 활용해서 다음과 같은 기능을 사용할 수 있다.
아직 헷갈릴 분들을 위해 Exclude에 대한 분산 과정을 첨부해두겠다. 이걸 바탕으로 Extract의 과정도 이해하길 바란다.
참고자료
한 입 크기로 잘라먹는 타입스크립트(TypeScript)
'언어 > TypeScript' 카테고리의 다른 글
유틸리티 타입 1 (0) | 2024.10.29 |
---|---|
infer - 타입 추론하기 (1) | 2024.10.17 |
조건부 타입 (1) | 2024.10.15 |
템플릿 리터럴 타입 (2) | 2024.10.09 |
맵드 타입 (1) | 2024.10.09 |