Kế thừa interface (inheritance)
Trong TypeScript, có thể sử dụng từ khóa extends để kế thừa interface đã định nghĩa và định nghĩa interface mới. Khi kế thừa interface, tất cả thông tin kiểu property của interface gốc sẽ được kế thừa. Có thể thêm property mới, hoặc chỉ định lại kiểu property đã khai báo thành subtype.
Thêm property
tsinterfacePerson {name : string;age : number;}interfaceStudent extendsPerson {grade : number; // Lớp}interfaceTeacher extendsPerson {students :Student []; // Học sinh}conststudentA :Student = {name : "Mai",age : 10,grade : 3,};constteacher :Teacher = {name : "Tuan",age : 30,students : [studentA ],};
tsinterfacePerson {name : string;age : number;}interfaceStudent extendsPerson {grade : number; // Lớp}interfaceTeacher extendsPerson {students :Student []; // Học sinh}conststudentA :Student = {name : "Mai",age : 10,grade : 3,};constteacher :Teacher = {name : "Tuan",age : 30,students : [studentA ],};
Khai báo lại property thành subtype
Trong TypeScript, việc chuyển từ một kiểu sang literal type của kiểu đó, hoặc lựa chọn một phần từ union type đều có cùng ý nghĩa là biến thành subtype. Tất nhiên cũng có thể biến thành subclass giống như các ngôn ngữ OOP khác.
Thay đổi thành literal type
tsinterfaceWebPage {path : string;}interfaceIndexPage extendsWebPage {path : "/";}
tsinterfaceWebPage {path : string;}interfaceIndexPage extendsWebPage {path : "/";}
Chọn từ union type
tsinterfacePerson {age : number | undefined;}interfaceStudent extendsPerson {age : number;}
tsinterfacePerson {age : number | undefined;}interfaceStudent extendsPerson {age : number;}