wen*_*dtl 2 javascript typescript
我正在尝试使用打字稿检查变量是否未定义,但没有任何运气。
我目前正在尝试
if (typeof variablename !== 'undefined') { /*do something here*/ }
Run Code Online (Sandbox Code Playgroud)
但由于某种原因编译器总是给我错误
Cannot find name 'variablename'
Run Code Online (Sandbox Code Playgroud)
我可以打开浏览器控制台并粘贴上面的代码,它会按预期工作。包含检查的文件undefined存在于未由任何其他 JS/TS 文件导入的文件中。
TypeScript 编译器不会让您访问它不知道的变量,因为大多数情况下此类访问都是错误的。
如果你想让编译器相信这样的变量在作用域内,你可以先declare这样做:
declare var variablename: string | undefined;
if (typeof variablename !== 'undefined') { /*do something here*/ }
Run Code Online (Sandbox Code Playgroud)
这根本不会改变发出的 JavaScript。它只是告诉编译器表现得好像范围内有一个var命名variablename的类型string | undefined(在您的用例中它可能是其他类型,string但我需要一个示例)。换句话说,它假设您的 JavaScript 将在存在variablename此类类型的上下文中运行。
这并不完全是您想要的,因为在运行时可能不存在这样的变量。不幸的是,没有办法告诉编译器该变量可能在范围内并且typeof可以用来检查它。变量要么在范围内(并且您可以访问它们),要么不在范围内(并且您不能访问它们)。microsoft/TypeScript#23602提出了一种有条件声明变量的方法,但没有任何结果。我认为,将变量声明为肯定存在但属于| undefined其中的类型是最接近的。
| 归档时间: |
|
| 查看次数: |
4146 次 |
| 最近记录: |