컨디셔널 타입을 자바스크립트의 삼항연산자처럼 중첩해서 만들 수도 있습니다.
type ChooseArray<A> = A extends string
? string[]
: A extends boolean ? boolean[] : never;
type StringArray = ChooseArray<string>;
// type StringArray = string[]
type BooleanArray = ChooseArray<boolean>;
// type BooleanArray = boolean[]
type Never = ChooseArray<number>;
// type Never = never
또는 인덱스 접근 타입으로 컨디셔널 타입을 표현할 수도 있습니다.
type A1 = string;
type B1 = A1 extends string ? number : boolean;
type B2 = {
't': number;
'f': boolean;
}[A1 extends string ? 't' : 'f'];
B1과 B2의 타입은 같습니다. 왜 굳이 더 복잡하게 사용할까요? 참일 때와 거짓일 때의 타입이 복잡한 경우는 이렇게 나타내기도 합니다(이 경우는 3.9절에서 또 보게 될 것입니다).