インターフェースの継承 (inheritance)
TypeScriptでは、extends
キーワードを利用して定義済みのインターフェースを継承して、新たにインターフェースを定義することができます。インターフェースを継承した場合、継承元のプロパティの型情報はすべて引き継がれます。新しくプロパティを追加することもできますし、すでに宣言されているプロパティの型を部分型に指定しなおすこともできます。
プロパティを追加する
ts
interfacePerson {name : string;age : number;}interfaceStudent extendsPerson {grade : number; // 学年}interfaceTeacher extendsPerson {students :Student []; // 生徒}conststudentA :Student = {name : "花子",age : 10,grade : 3,};constteacher :Teacher = {name : "太郎",age : 30,students : [studentA ],};
ts
interfacePerson {name : string;age : number;}interfaceStudent extendsPerson {grade : number; // 学年}interfaceTeacher extendsPerson {students :Student []; // 生徒}conststudentA :Student = {name : "花子",age : 10,grade : 3,};constteacher :Teacher = {name : "太郎",age : 30,students : [studentA ],};
プロパティを部分型に宣言しなおす
ある型からその型のリテラル型にすることも、ユニオン型から部分的に選択することもTypeScriptではそれぞれサブタイプにしていることと同じ意味があります。もちろん他のオブジェクト指向の言語と同じようにサブクラスにすることもできます。
リテラル型に変更する
ts
interfaceWebPage {path : string;}interfaceIndexPage extendsWebPage {path : "/";}
ts
interfaceWebPage {path : string;}interfaceIndexPage extendsWebPage {path : "/";}
ユニオン型から選ぶ
ts
interfacePerson {age : number | undefined;}interfaceStudent extendsPerson {age : number;}
ts
interfacePerson {age : number | undefined;}interfaceStudent extendsPerson {age : number;}