InterSection Type
// 변수에 number와 string타입의 교집합에 해당 하는 타입을 지정 하였기 때문에 never 타입으로 추론된다
let var1 : number & string;
여러가지 객체 타입들을 &로 묶어 주면 묶어 준 객체 타입들의 프로퍼티를 모두 포함 해야 한다.
type A = {
name: string;
age: number;
};
type B = {
name: string;
height: number;
};
// 😀 intersection type을 만들었다.
type Union = A & B;
// 🔥 B type에만 있는 height가 빠졌기 때문에 에러가 난다
let User: Union = {
name: 'hdh',
age: 30
}
// 🔥 A type에만 있는 age가 빠졌기 때문에 에러가 난다
let User2: Union = {
name: 'hdh',
height: 180
}
// 😀 묶어준 타입들의 모든 프로퍼티를 포함해야 한다.
let User3: Union = {
name: 'hdh',
age: 30,
height: 180
}