作者:红烧大青虫 | 来源:互联网 | 2023-02-05 18:52
一位朋友重构了一些代码,并将一个name
从函数顶级范围调用的变量的定义移动到了一个then
体内.此变量在后续使用中then
导致ReferenceError,因为name
它不在范围内.
在我们看到typescript/lib.d.ts有以下减速之前,我们无法理解代码是如何通过编译的:
declare const name: never;
长话短说,我有两个问题.
为什么name
(以及length
许多其他全局变量)默认添加到打字稿?
从周围的代码来看,这似乎意味着要在浏览器中运行的项目,我们是一个node.js项目.我们可以选择不为我们添加这些声明吗?
Sebastian Se..
8
这似乎是一个非常古老的浏览器行为.参考MDN两者name
并且length
是window
对象的属性.
https://developer.mozilla.org/en-US/docs/Web/API/Window/name
https://developer.mozilla.org/en-US/docs/Web/API/Window/length
为了摆脱所有特定于DOM的声明,您可以相应地设置lib
属性tsconfig
.你可以看到这个页面上的所有选项.看看--lib
国旗.
告诉TypeScript你的代码在Node.JS上运行的选项会很好.但它似乎尚未实现:https://github.com/Microsoft/TypeScript/issues/9466
1> Sebastian Se..:
这似乎是一个非常古老的浏览器行为.参考MDN两者name
并且length
是window
对象的属性.
https://developer.mozilla.org/en-US/docs/Web/API/Window/name
https://developer.mozilla.org/en-US/docs/Web/API/Window/length
为了摆脱所有特定于DOM的声明,您可以相应地设置lib
属性tsconfig
.你可以看到这个页面上的所有选项.看看--lib
国旗.
告诉TypeScript你的代码在Node.JS上运行的选项会很好.但它似乎尚未实现:https://github.com/Microsoft/TypeScript/issues/9466