1. 유니언 타입의 특징
interface Developer {
name: string;
skill: string;
}
interface Person {
name: string;
age: number;
}
function askSomeone(someone: Developer | Person) {
someone.name;
}
askSomeone({ name: 'soo', skill: 'ts' });
askSomeone({ name: 'soo', age: 100 });
- | 연산자를 사용하여 타입들을 연결
- 타입들의 공통된 속성에만 접근이 가능
- 연결된 타입의 규격 중 하나의 타입의 규격을 넣어주면 됨
- 함수의 전달인자로 타입의 데이터에 따라 넣어서 전달해줌
- 상대적으로 유니언 타입이 더 많이 쓰임
- 함수 내부에서의 타입 가드를 사용해야 하는 작업이 필요하지만, 전달인자로 넘기는 타입에서는 선택 가능
2. 인터섹션 타입의 특징
interface Developer {
name: string;
skill: string;
}
interface Person {
name: string;
age: number;
}
function askSomeone(someone: Developer & Person) {
someone.name;
someone.skill;
someone.age;
}
askSomeone({ name: 'soo', skill: 'ts', age: 100 });
- & 연산자를 사용하여 타입들을 연결
- 타입들의 모든 속성에 접근이 가능
- 연결된 타입들을 합친 또 다른 하나의 타입
- 함수 호출 시 전달인자로 연결된 타입들을 모두 합한 데이터를 넘겨야 함
- 모든 타입의 모두 포함하는 새로운 타입을 만드는 것
참고 : 타입스크립트 입문 - 기초부터 실전까지