[typescript] 유니온 타입과 인터섹션 타입의 차이점은 무엇인가요?

유니온 타입

유니온 타입은 “ ” 기호를 사용하여 여러 타입을 하나로 결합하는 방식을 말합니다. 이는 값이 여러 타입 중 하나일 수 있음을 나타냅니다.

예를 들어,

type MyType = string | number;
let value: MyType;
value = "Hello"; // 유효
value = 10; // 유효
value = true; // 에러: boolean 타입은 유니온 타입에 포함되지 않음

인터섹션 타입

인터섹션 타입은 “&” 기호를 사용하여 여러 타입을 결합하는 방식을 말합니다. 이는 값이 여러 타입을 모두 만족해야 함을 나타냅니다.

예를 들어,

type Person = { name: string } & { age: number };
let person: Person;
person = { name: "John", age: 30 }; // 유효
person = { name: "Anna" }; // 에러: age 속성이 없음
person = { name: "Michael", age: "25" }; // 에러: age 속성이 숫자가 아님

차이점

따라서, 이러한 차이로 인해 각각의 타입은 다르게 동작하며, 개발자는 상황에 맞게 적절한 타입을 선택하여 사용해야 합니다.