TypeScript 中的介面類型檢查
在TypeScript 中,介面定義物件可以遵循的契約,但它們不會在運行時強制執行它們。這意味著使用instanceof檢查變數是否實作介面將會失敗。
要實現介面的運行時類型檢查,可以使用自訂類型保護。這些函數接受一個物件作為參數並返回一個布林值,指示它是否實現了所需的接口:
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); }
對於具有大量成員的接口,您可以添加一個鑑別器屬性:
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中文網其他相關文章!