조건부 타입
매우 심플하게 작성이 가능합니다.
T extends U ? X : Y
삼항연산자로 작성이 가능하며 일반적으로 변수의 값을 조건에 따라 결정하는 것이라면 조건부 타입은 조건에 따라 타입을 결정하는 것입니다.
type TestType<T> = T extends string ? string[] : number[]
type T1 = TestType<string> // string
type T2 = TestType<number> // number
const name: T1 = ["임창정", "김연아", "메시"]
const age: T2 = ["48", "32", "35"]
유용하게 사용될 것 같습니다. 타입을 지정한다고 코드를 길게 작성했지만 그럴필요 없이 조건부 타입을 사용해도 될 것 같습니다. 그래도 조건부 타입을 여러개 작성하면 코드의 가독성이 매우 떨어짐으로 적당히 사용하는게 좋을 것 같습니다.
type IsNumberType = 123 extends number ? true : false //true
type IsNumberType2 = number extends 123 ? true : false // false
다양하게 조건을 걸수있습니다. 123의 확장은 숫자 타입이므로 true가 나오고 number의 타입은 숫자가 맞지만 123은 아니므로 false가 나옵니다.
분배 조건 유형
유니온을 통해서 조건을 나눌 수도 있습니다.
type Name = {
name: string
}
type Age = {
age: number
}
type Nameless<T extends string | number> = T extends number ? Name : Age
정리
타입을 지정하는데 있어서 다양한 유형이 있고 복잡하지만 코드를 줄이는데 좋은 방향이 될 것 같습니다.
https://www.typescriptlang.org/docs/handbook/2/conditional-types.html
Documentation - Conditional Types
Create types which act like if statements in the type system.
www.typescriptlang.org
'개인공부 > TypeScript' 카테고리의 다른 글
#TypeScript (6) Utility Type 2 (0) | 2022.12.02 |
---|---|
#TypeScript (5) Utility Type 1 (0) | 2022.12.02 |
#TypeScript (3) Index Signature (0) | 2022.11.01 |
Type 과 Interface (0) | 2022.10.31 |
ChangeEvent (0) | 2022.10.25 |