본문 바로가기
개인공부/TypeScript

#TypeScript (4) Condition Type

by BTSBRINGMEHERE 2022. 11. 2.

조건부 타입

매우 심플하게 작성이 가능합니다. 

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