繁体   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