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를 그대로 반환합니다.
조건부 타입을 활용하면 다양한 타입 변환을 수행할 수 있습니다.
예를 들어, 다음과 같은 경우에 유용하게 사용할 수 있습니다.
TypeScript의 조건부 타입(Conditional Types)은 특정 조건에 따라 타입을 결정하는 기능으로, 더욱 유연한 타입 변환을 수행하고 복잡한 타입 관계를 다룰 수 있습니다.