교차 타입(intersection type) : &
- type을 결합할 수 있다.
- 어떤 타입이든 쓸 수 쓸 수 있다
interface Admin {
name: string;
priviledges: string[];
};
interface Employee = {
name: string;
startDate: Date;
}
type ElevatedEmployee = Admin & Employee;
- 위 코드는 interface를 결합한 것이므로 다음과 같다.
interface ElevatedEmployee extends Employee, admin{}
type Combinable = string | number;
type Numeric = number | blooean;
type Universal = Combinable & Numeric
- Universal은 Combinable와 Numeric의 교집합인 number type이 된다.
- 객체타입을 교차타입을 쓰면 프로퍼티들을 합치지만 다른 타입의 경우 공통 타입이 지정된다.