언어/TypeScript

분산적인 조건부 타입

calendar2 2024. 10. 16. 00:09

이전 조건부 타입에서 string과 number 타입을 서로 뒤바꾸는 타입을 정의한 적이 있다.

그 타입에 아래와 같이 유니온 타입을 지정하니 출력되는 타입도 유니온 타입이 되었다.

분산 조건 1

 

이 특징이 이번에 정리할 조건부 타입의 분산성이다.

StringNumberSwitch 타입은 T에 들어온 타입이 number 타입을 확장하고 있으면 string, 그렇지 않으면 number 타입으로 변환해준다.

그렇다면 T가 number | string과 같이 유니온 타입으로 되어 있을 경우 number 타입에 확장되지 않기 때문에 number 타입이 도출돼야할 것 같다.

하지만, 조건부 타입의 분산 특징 때문에 타입 정의가 다음과 같이 이루어진다.

분산 과정 1

 

과정을 살펴보면 T에 정의된 유니온 타입이 각각 분산되어 타입 스위치가 일어나고 이후에 다시 유니온 타입으로 묶이는 과정이 진행된다.

이러한 조건부 타입의 분산 특징을 활용해서 다음과 같은 기능을 사용할 수 있다.

제외, 추출 타입

 

아직 헷갈릴 분들을 위해 Exclude에 대한 분산 과정을 첨부해두겠다. 이걸 바탕으로 Extract의 과정도 이해하길 바란다.

분산 과정 2

참고자료

한 입 크기로 잘라먹는 타입스크립트(TypeScript)

 

한 입 크기로 잘라먹는 타입스크립트(TypeScript) 강의 | 이정환 Winterlood - 인프런

이정환 Winterlood | 문법을 넘어 동작 원리와 개념 이해까지 배워도 배워도 헷갈리는 타입스크립트 이제 제대로 배워보세요! 여러분을 타입스크립트 마법사🧙🏻‍♀️로 만들어드립니다., 프론

www.inflearn.com

 

'언어 > TypeScript' 카테고리의 다른 글

유틸리티 타입 1  (0) 2024.10.29
infer - 타입 추론하기  (1) 2024.10.17
조건부 타입  (1) 2024.10.15
템플릿 리터럴 타입  (2) 2024.10.09
맵드 타입  (1) 2024.10.09