在TypeScript 中,當嘗試驗證類型為any 的變數是否遵循以下條件時,會出現一個常見的困境執行時間指定的介面。考慮以下程式碼:
interface A { member: string; } var a: any = { member: "foobar" }; if (a instanceof A) alert(a.member);
這裡,TypeScript Playground 在最後一行產生一個錯誤,聲稱名稱 A 在目前作用域中未定義。然而,這是不正確的,因為 A 已明確定義。要解決此問題,重要的是要了解介面在產生的 JavaScript 中沒有表示形式,從而無法進行執行時間類型檢查。
這種困境源自於 JavaScript 的動態特性,其中介面沒有定義的存在。因此,問題出現了:有沒有一種方法可以對 TypeScript 中的介面進行類型檢查?
playground 的自動完成功能確實揭示了一個名為 Implements 的方法,讓我們想知道如何使用它。這就是自訂類型防護發揮作用的地方:
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); }
透過這種方法,您可以對介面進行類型檢查,而無需使用 instanceof。但是,對於更複雜的情況,請考慮使用判別器來管理您自己的判別器並確保不會發生重複。
以上是如何在 TypeScript 中執行執行時間介面類型檢查?的詳細內容。更多資訊請關注PHP中文網其他相關文章!