gpt4 book ai didi

javascript - 检查变量是否在 Typescript 中定义?

转载 作者:行者123 更新时间:2023-12-01 23:34:36 28 4
gpt4 key购买 nike

我正在尝试使用 typescript 检查变量是否未定义,但我没有任何运气。

我正在尝试

if (typeof variablename !== 'undefined') { /*do something here*/ }

但出于某种原因,编译器总是给我错误

Cannot find name 'variablename'

我可以打开浏览器控制台并粘贴上面的代码,它会按预期工作。包含 undefined 检查的文件存在于未被任何其他 JS/TS 文件导入的文件中。

最佳答案

TypeScript 编译器不会让您访问它不知道的变量,因为大多数时候此类访问都是错误的。

如果你想让编译器相信这样的变量在范围内,你可以declare it第一:

declare var variablename: string | undefined;
if (typeof variablename !== 'undefined') { /*do something here*/ }

这根本不会改变发出的 JavaScript。它只是告诉编译器,就好像在作用域中有一个名为 variablenamevar,其类型是 string | undefined (在您的用例中,它可能是 string 以外的某种类型,但我需要一个示例)。换句话说,它假定您的 JavaScript 将在具有此类类型的 variablename 的上下文中运行。

这不是您想要的,因为在运行时可能没有这样的变量。不幸的是,没有办法告诉编译器变量可能在 范围内并且typeof 可以用来检查它。变量要么在范围内(您可以访问它们),要么不在范围内(您不能)。在 microsoft/TypeScript#23602 有一个提议有一种方法可以有条件地声明变量,但没有任何结果。将变量声明为绝对存在但类型为 | undefined 我认为它是尽可能接近的。

Playground link to code

关于javascript - 检查变量是否在 Typescript 中定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65754909/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com