交差型 ( Intersection Types )
-
&
で複数の型を結合する事ができます - オブジェクト型で使う場合、複数のオブジェクトのプロパティが結合されたオブジェクトになります
type ManagerEmploee = Admin & Employee;
- Union型で使う場合、複数のUnion型が共通で保持する型になります
-
type Universal = Combinable & Numeric;
// number型
-
type Admin = {
name: string;
privileges: string[];
}
type Employee = {
name: string;
startDate: Date;
}
type ManagerEmploee = Admin & Employee;
const e1: ManagerEmploee = {
name: 'ManagerCat',
privileges: ['create-server'],
startDate: new Date(), //現在日時を生成
}
- インターフェースを使う事もできます
interface Admin {
name: string;
privileges: string[];
}
interface Employee {
name: string;
startDate: Date;
}
interface ManagerEmploee extends Employee, Admin {} //複数のinterfaceを実装
- 交差型は、型の定義に使う事もできます
// union型
type Combinable = string | number;
type Numeric = number | boolean;
type Universal = Combinable & Numeric; // 交差部分がnumberのみであるので number型になる