![](/img/trans.png)
[英]Typescript: Is there a way to check if a variable is an interface-defined object with nested properties?
[英]Check if variable is defined in Typescript?
我正在嘗試使用 typescript 檢查變量是否未定義,但沒有任何運氣。
我目前正在嘗試
if (typeof variablename !== 'undefined') { /*do something here*/ }
但由於某種原因,編譯器總是給我錯誤
Cannot find name 'variablename'
我可以打開瀏覽器控制台並粘貼上面的代碼,它可以按預期工作。 包含undefined
檢查的文件存在於任何其他 JS/TS 文件未導入的文件中。
TypeScript 編譯器不會讓您訪問它不知道的變量,因為大多數時候這種訪問都是錯誤的。
如果你想讓編譯器相信這樣一個變量在 scope 中,你可以先declare
它:
declare var variablename: string | undefined;
if (typeof variablename !== 'undefined') { /*do something here*/ }
這根本不會改變發出的 JavaScript 。 它只是告訴編譯器就像在 scope 中有一個名為variablename
的var
,其類型為string | undefined
string | undefined
(在您的用例中,它可能是string
以外的其他類型,但我需要一個示例)。 換句話說,它假設您的 JavaScript 將在這種類型的variablename
名存在的上下文中運行。
這並不完全是您想要的,因為在運行時可能沒有這樣的變量。 不幸的是,沒有辦法告訴編譯器該變量可能在 scope 中,並且可以使用typeof
來檢查它。 變量要么在 scope 中(你可以訪問它們),要么不在(你不能)。 在microsoft/TypeScript#23602上提出了一種有條件地聲明變量的方法,但沒有任何結果。 將變量聲明為絕對存在但類型為| undefined
我認為,其中| undefined
的內容盡可能接近。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.