[英]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.