반응형
조건부 타입
조건부 타입은 TypeScript가 제공하는 기능 중에서도 가장 독특하다고 할 수 있습니다.
조건부 타입의 의미를 말로 풀어보자면 "U와 V 타입에 의존하는 T 타입을 선언하라. U <: V면 T를 A에 할당하고, 그렇지 않으면 T를 B에 할당하라"라고 할 수 있습니다.
코드로는 다음과 같습니다.
type IsString<T> = T extends string // ①
? true // ②
: false // ③
type A = IsString<string> // type A = true
type B = IsString<number> // type B = false
한 줄씩 자세히 살펴봅시다.
- 제네릭 타입 T를 인수로 갖는 새로운 조건부 타입 IsString을 선언했습니다. 이 조건부 타입에서 '조건'은 T extends string 부분이고, "T는 string의 서브 타입인가?"라는 의미입니다.
- T가 string의 서브 타입이면 true 타입으로 해석합니다.
- 그렇지 않으면 false 타입으로 해석합니다.
평범한 값 수준의 삼항 연산자처럼 보이는 문법이지만 실제로는 타입 수준의 연산입니다.
일반적인 삼항 연산자처럼 중첩할 수도 있습니다.
조건부 타입은 타입 별칭 외에도 타입을 사용할 수 있는 거의 모든 곳에 사용할 수 있습니다.
반응형
'👶 TypeScript' 카테고리의 다른 글
조건부 타입 - infer 키워드 (0) | 2023.01.21 |
---|---|
조건부 타입 - 분배적 조건부 (0) | 2023.01.21 |
고급 함수 타입들 - 사용자 정의 타입 안전 장치 (0) | 2023.01.20 |
고급 함수 타입들 - 튜플의 타입 추론 개선 (0) | 2023.01.20 |
컴패니언 객체 패턴(companion object pattern) (0) | 2023.01.20 |