簡體   English   中英

檢查變量是否在 Typescript 中定義?

[英]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 中有一個名為variablenamevar ,其類型為string | undefined string | undefined (在您的用例中,它可能是string以外的其他類型,但我需要一個示例)。 換句話說,它假設您的 JavaScript 將在這種類型的variablename名存在的上下文中運行。

這並不完全是您想要的,因為在運行時可能沒有這樣的變量。 不幸的是,沒有辦法告訴編譯器該變量可能在 scope 中,並且可以使用typeof來檢查它。 變量要么在 scope 中(你可以訪問它們),要么不在(你不能)。 microsoft/TypeScript#23602上提出了一種有條件地聲明變量的方法,但沒有任何結果。 將變量聲明為絕對存在但類型為| undefined 我認為,其中| undefined的內容盡可能接近。

Playground 代碼鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM