TypeScript学習4(Typed objects: Interfaces)
Interfaces
Creates a new type, describing the property names and value types of an object
例えば、今まで学んだことを利用して次のように型定義を行うと、コードが長くなってしまって可読性も低くなる。
const oldCivic = { name: 'civic', year: 200, broken: true }; const printVehicle = (vehicle: { name: string; year: number; broken: boolean; }): void => { console.log(`Name: ${vehicle.name}`); console.log(`Year: ${vehicle.year}`); console.log(`Broken? ${vehicle.broken}`); };
そこで、Interfaceを用いて別箇所での型定義を行う。
const oldCivic = { name: 'civic', year: 200, broken: true }; interface Vehicle { name: string; year: number; broken: boolean; } const printVehicle = (vehicle: Vehicle): void => { console.log(`Name: ${vehicle.name}`); console.log(`Year: ${vehicle.year}`); console.log(`Broken? ${vehicle.broken}`); };
プリミティブだけでなく、どんな型でもInterfacesに入れることができる。
const oldCivic = { name: 'civic', year: new Date(), broken: true, summary(): string { return `Name: ${this.name}`; } }; interface Vehicle { name: string; year: Date; broken: boolean; summary(): string; } const printVehicle = (vehicle: Vehicle): void => { console.log(vehicle.summary()); }; printVehicle(oldCivic);
Interfaceとは、ファンクションに引数を渡す際のゲートキーパである。