여러개의 타입을 합성해서 만드는 타입
-> 합집합(Union) 타입
-> 교집합(Intersection) 타입 존재
바'|' 를 이용함.
type Dog = {
name: string;
color: string;
};
type Person = {
name: string;
language: string;
};
type Union1 = Dog | Person;
위와 같이 Union1 타입을 Dog와 Person 타입의 합집합으로 표현
(...)
let union1: Union1 = { // ✅
name: "",
color: "",
};
let union2: Union1 = { // ✅
name: "",
language: "",
};
let union3: Union1 = { // ✅
name: "",
color: "",
language: "",
};
위와 같은 객체들을 포함함
let union4: Union1 = { // ❌
name: "",
};
하지만 위와 같은 객체는 포함 불가 -> 어느 집합에도 속하지 못하기 때문

&를 이용해 정의
말 그대로 여러개의 타입들의 교집합만 사용
-> 범위가 Union보다 좁혀짐
type Dog = {
name: string;
color: string;
};
type Person = {
name: string;
language: string;
};
type Intersection = Dog & Person;
let intersection1: Intersection = {
name: "",
color: "",
language: "",
};
위와 같이 Dog와 Person 타입의 프로퍼티를 모두 포함해야 함.
