조건부 타입은 타입 수준에서 if처럼 결과를 고른다

T extends U ? X : Y 형태로 입력 타입이 조건을 만족하는지에 따라 다른 타입 결과를 만든다.

1
Input T
검사할 타입을 받음
2
extends check
T가 U에 할당 가능한지 판단
3
true branch
조건을 만족하면 X 선택
4
false branch
아니면 Y 선택
5
Union distribute
T가 union이면 각 멤버에 개별 적용
점검기준
Exclude<T, U>U에 속하는 멤버를 제거
Extract<T, U>U와 겹치는 멤버만 남김
ReturnType<F>함수 시그니처에서 반환 타입 추출

핵심 조건부 타입은 런타임 분기가 아니라 타입 계산의 분기다.