💁🏻‍♀️ 소개

TypeScript의 조건부 타입(Conditional Types)은 특정 조건에 따라 타입을 결정하는 기능입니다.
이를 통해 더욱 유연한 타입 변환을 수행하고, 복잡한 타입 관계를 다룰 수 있습니다.

❶ 조건부 타입 기본 개념

조건부 타입은 조건식과 참일 때의 타입, 거짓일 때의 타입을 지정하여 작성합니다.
조건부 타입은 다음과 같은 구문으로 작성됩니다.

type ConditionalType<T> = T extends SomeType ? TrueType : FalseType;

위 예시에서 T extends SomeType는 조건식이고, ? 연산자 뒤에 참일 때의 타입(TrueType)과 거짓일 때의 타입(FalseType)을 지정합니다.

조건부 타입 사용 예제

조건부 타입을 사용하여 함수의 반환값이 Promise인 경우 반환값의 타입을 추출하는 예제를 살펴보겠습니다.

type UnwrapPromise<T> = T extends Promise<infer U> ? U : T;

function fetchData(): Promise<string> {
    return Promise.resolve("Hello, TypeScript!");
}

type ResponseType = UnwrapPromise<ReturnType<typeof fetchData>>; // string

위 예시에서 UnwrapPromise<T>는 타입 T가 Promise인 경우 반환값의 타입을 추출하고, 그렇지 않으면 T를 그대로 반환합니다.

❷ 조건부 타입의 활용

조건부 타입을 활용하면 다양한 타입 변환을 수행할 수 있습니다.
예를 들어, 다음과 같은 경우에 유용하게 사용할 수 있습니다.

  1. 타입 가드(Type Guard)를 구현할 때 조건부 타입을 사용하여 반환 타입을 정확하게 지정할 수 있습니다.
  2. 타입 간의 관계를 표현할 때 조건부 타입을 사용하여 복잡한 타입 관계를 더 간결하게 표현할 수 있습니다.

📝 총정리

TypeScript의 조건부 타입(Conditional Types)은 특정 조건에 따라 타입을 결정하는 기능으로, 더욱 유연한 타입 변환을 수행하고 복잡한 타입 관계를 다룰 수 있습니다.

profile
#UXUI #코린이

0개의 댓글