union은 발생할 수 있는 모든 케이스에서 한가지만 선택할 수 있는거라면
intersection은 모든 것을 합친 개념이다.
intersection을 사용하면 다양한 타입을 하나로 묶어서 사용하 수 있다.
union이 | 이라면 intersection은 & 같은 개념이다.
type Student = {
name: String;
age: number;
};
type Worker = {
employeeID: number;
work: () => void;
};
function intern(person: Student & Worker) {
console.log(person.name, person.age, person.employeeID, person.work());
}
intern({
name: "dfs",
age: 32,
employeeID: 34453,
work: () => {},
});
console.log
로 Student type, Worker type 둘다 확인할 수 있다.
그러기 위해서는
intern 함수의 인자로 전달할 때는 Student, Worker 두 타입 모두 작성해서 넘겨야 한다.
Student만 써도 error, Worker만 써도 error