여러 개의 타입을 합성해서 새롭게 만들어낸 타입
let a: string | number | boolean;
a = 1;
a = "hello";
a = true;
let arr: (number | string | boolean)[] = [1, "hello", true];
type Dog = {
name: string;
color: string;
};
type Person = {
name: string;
language: string;
};
type Union1 = Dog | Person;
// ✅Dog type에 해당하는 경우
let union1: Union1 = {
name: "",
color: "",
};
// ✅Person type에 해당하는 경우
let union2: Union1 = {
name: "",
language: "",
};
// ✅Dog & Person type에 해당하는 경우
let union3: Union1 = {
name: "",
color: "",
language: "",
};
// ❌ 위 세가지 경우에 포함되지 않는 경우
let union4: Union1 = {
name: "",
};
let variable: number & string;
type Dog = {
name: string;
color: string;
};
type Person = {
name: string;
language: string;
};
type Intersection = Dog & Person;
// ✅ Dog와 Person type 모두에 해당해야 함
let intersection1: Intersection = {
name: "",
color: "",
language: "",
};
// ❌ 두 타입의 모든 프로퍼티를 충족하지 않는 경우
let intersection1: Intersection = {
name: "",
color: "",
};