[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
조건부 타입은 T
가 null
또는 undefined
인 경우 never
타입을 반환하고, 그렇지 않은 경우에는 T
타입을 반환합니다.
차이점
- 유니온 타입은 여러 타입 중 하나일 수 있지만, 조건부 타입은 입력된 타입에 따라 결과 타입이 달라집니다.
- 유니온 타입은 주어진 타입들 중 하나의 값일 수 있으며, Union 타입을 만족하는 값은 모든 타입 중 적어도 하나를 만족해야 합니다. 하지만 조건부 타입은 특정 조건에 따라 타입이 바뀝니다.