0Pricing
TypeScript Academy · 강의

분배 조건부 형식

조건부 형식이 유니언 구성원 전체에 분배되는 방식을 이해합니다.

분배 조건부 형식은(는) CoddyKit의 무료 TypeScript Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 TypeScript Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. TypeScript Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

환영합니다

분배 조건부 타입은 조건부 타입을 유니언의 각 멤버에 개별적으로 적용합니다. 이 강력한 동작을 통해 유니언 변환과 필터링을 수행할 수 있습니다.

분배란 무엇인가요

조건부 타입에 단순한 제네릭 T가 있고 T가 유니언이면, TypeScript는 조건부 타입을 각 유니언 멤버에 개별적으로 적용합니다.
type Wrap<T> = T extends any ? { value: T } : never;
type R = Wrap<string | number>;
// = { value: string } | { value: number }

핵심 조건

분배는 T가 단순한, 즉 래핑되지 않은 제네릭 타입 매개변수일 때만 발생합니다. T를 튜플로 감싸면 분배가 방지됩니다.
type Bare<T> = T extends string ? 'yes' : 'no';
type Wrapped<T> = [T] extends [string] ? 'yes' : 'no';
type B = Bare<'a' | 'b'>; // 'yes' | 'yes' = 'yes'
type W = Wrapped<'a' | 'b'>; // 'no' — treated as a tuple

never를 사용한 유니언 필터링

거짓 분기에서 never를 반환하면 유니언 멤버가 필터링되어 제거됩니다.
type StringsOnly<T> = T extends string ? T : never;
type S = StringsOnly<string | number | boolean>; // string

내장 Extract

Extract는 U에 할당할 수 있는 멤버를 유지하는 분배 조건부 타입으로 구현됩니다.
type Extract<T, U> = T extends U ? T : never;
type E = Extract<string | number | boolean, string | number>; // string | number

내장 Exclude

Exclude는 U에 할당할 수 있는 유니언 멤버를 제거합니다.
type Exclude<T, U> = T extends U ? never : T;
type Ex = Exclude<string | number | boolean, boolean>; // string | number

ToArray 분배

분배를 통해 각 유니언 멤버에 ToArray를 개별적으로 적용합니다.
type ToArray<T> = T extends any ? T[] : never;
type R = ToArray<string | number>; // string[] | number[]

분배 방지의 사용 사례

때로는 전체 유니언을 하나의 타입 인수로 취급하고, 각 멤버에 분배하지 않아야 할 때가 있습니다.
type IsUnion<T> = [T] extends [T] ? [T] extends [Exclude<T, T>] ? false : true : false;

분배 매핑 타입

분배 조건부 타입과 매핑 타입을 결합해 선택한 속성을 변환합니다.
type PickByValue<T, V> = {
  [K in keyof T as T[K] extends V ? K : never]: T[K]
};

ReturnType에서의 분배 조건부 타입

분배 동작 덕분에 T가 함수 타입의 유니언일 때 ReturnType이 올바르게 작동합니다.
type Fn = (() => string) | (() => number);
type R = ReturnType<Fn>; // string | number

즉시 분배와 지연 분배

TypeScript는 자유 타입 매개변수가 있는 조건부 타입을 해결될 때까지 평가하지 않고 미룹니다. 이것이 지연 평가입니다.

빠른 확인

T가 단순한 제네릭이 아닐 때 `type R = (string | number) extends string ? 'yes' : 'no'`의 결과는 무엇인가요?

요약

분배 조건부 타입은 T가 단순한 제네릭 매개변수일 때 각 유니언 멤버에 개별적으로 적용됩니다. 이를 통해 Extract, Exclude 및 사용자 정의 유니언 필터링을 구현할 수 있습니다. 튜플로 감싸면 분배를 방지할 수 있습니다.

자주 묻는 질문

“분배 조건부 형식” 강의는 무료인가요?

네 — “분배 조건부 형식” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 TypeScript Academy 강의 전체를 잠금 해제할 수 있습니다. TypeScript Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“분배 조건부 형식”에서 뭘 배우나요?

조건부 형식이 유니언 구성원 전체에 분배되는 방식을 이해합니다. 브라우저에서 직접 실행하는 실습 코드로 TypeScript Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

TypeScript Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 TypeScript Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.

“분배 조건부 형식” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 TypeScript Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 TypeScript Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. keyof 및 인덱스 접근 형식
  2. 제네릭 제약 조건: 형식 매개변수 좁히기
  3. 조건부 형식: T extends U ? X : Y
  4. 분배 조건부 형식
← TypeScript Academy(으)로 돌아가기