[typescript] 유니온 타입과 조건부 타입의 차이점은 무엇인가요?

유니온 타입 (Union Types)

유니온 타입은 둘 이상의 타입을 허용하는 타입으로, | 기호를 사용하여 여러 타입을 결합하여 생성됩니다. 예를 들어, number | string은 숫자나 문자열을 나타내는 타입입니다.

let age: number | string;
age = 25; // 유효
age = "twenty-five"; // 유효
age = true; // 불허 (숫자나 문자열이어야 함)

조건부 타입 (Conditional Types)

조건부 타입은 입력된 타입에 따라 다른 타입을 생성하는 조건을 정의하는 데 사용됩니다. extends 키워드를 사용하여 조건부 타입을 정의하며, infer 키워드를 사용하여 관련된 타입을 추론합니다.

type NonNullable<T> = T extends null | undefined ? never : T;

위의 예제에서, NonNullable 조건부 타입은 Tnull 또는 undefined인 경우 never 타입을 반환하고, 그렇지 않은 경우에는 T 타입을 반환합니다.

차이점