TypeScript 中的介面類型檢查
在TypeScript 中,介面定義物件可以遵循的契約,但它們不會在運行時強制執行它們。這意味著使用instanceof檢查變數是否實作介面將會失敗。
要實現介面的運行時類型檢查,可以使用自訂類型保護。這些函數接受一個物件作為參數並返回一個布林值,指示它是否實現了所需的接口:
1 2 3 4 5 6 7 8 9 10 11 12 13 | interface A {
member: string;
}
function instanceOfA(object: any): object is A {
return 'member' in object;
}
var a: any = { member: "foobar" };
if (instanceOfA(a)) {
alert(a.member);
}
|
登入後複製
對於具有大量成員的接口,您可以添加一個鑑別器屬性:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | interface A {
discriminator: 'I-AM-A' ;
member: string;
}
function instanceOfA(object: any): object is A {
return object.discriminator === 'I-AM-A' ;
}
var a: any = { discriminator: 'I-AM-A' , member: "foobar" };
if (instanceOfA(a)) {
alert(a.member);
}
|
登入後複製
這可以進行高效率的類型檢查,而無需單獨檢查所有成員。
以上是如何在TypeScript中實現介面的運行時類型檢查?的詳細內容。更多資訊請關注PHP中文網其他相關文章!