javascript - 检查 Typescript 中是否定义了变量?
问题描述
我正在尝试使用打字稿检查变量是否未定义,但没有任何运气。
我目前正在尝试
if (typeof variablename !== 'undefined') { /*do something here*/ }
但由于某种原因,编译器总是给我错误
Cannot find name 'variablename'
我可以打开浏览器控制台并粘贴上面的代码,它可以按预期工作。包含undefined
检查的文件存在于任何其他 JS/TS 文件未导入的文件中。
解决方案
TypeScript 编译器不会让你访问它不知道的变量,因为大多数时候这种访问都是错误的。
如果您希望编译器相信这样的变量在范围内,您可以declare
先:
declare var variablename: string | undefined;
if (typeof variablename !== 'undefined') { /*do something here*/ }
这根本不会改变发出的 JavaScript。它只是告诉编译器就像在范围内有一个var
命名variablename
的类型,它的类型是string | undefined
(在您的用例中,它可能是某种类型,string
但我需要一个示例)。换句话说,它假定您的 JavaScript 将在variablename
这种类型存在的上下文中运行。
这并不完全是您想要的,因为在运行时可能没有这样的变量。不幸的是,没有办法告诉编译器该变量可能在范围内并且typeof
可以用来检查它。变量要么在范围内(你可以访问它们),要么不在范围内(你不能)。在microsoft/TypeScript#23602上提出了一种有条件地声明变量的方法,但没有任何结果。我认为,将变量声明为绝对存在但属于其中的类型| undefined
是尽可能接近的。
推荐阅读
- javascript - Next.js 应用程序使用 minikube 在本地机器上的 docker 容器中构建,但不构建在使用谷歌云 kubernetes 设置的登台上
- c# - 在 Consul 上注册服务_意外响应
- php - 如何从每个类别中获取 2 个产品
- python - 如何使用 python docx 在 Word 中自定义编号样式?
- css - 有没有办法在不知道父类名的情况下对父悬停做出反应?
- xml - 我需要在 RTF 布局中如下
- python - Pandas Dataframe 绘制行与列
- python - 列表中 ::-1 的解释
- kentico - Kentico 表单控件从媒体库中选择多个文件
- plugins - 如何为 Outlook 创建一个插件以喜欢 Zoom 满足 Outlook