一位朋友重构了一些代码,并将名为name
的变量的定义从函数的顶级范围移到then
的正文中。此变量在后续then
中使用,导致 ReferenceError ,因为name
不在范围内。
我们无法理解代码如何通过编译,直到我们看到typescript/lib.d.ts有以下减速:
declare const name: never;
长话短说,我有两个问题。
name
(以及length
和许多其他全局变量)默认添加到打字稿?答案 0 :(得分:6)
这似乎是一个非常古老的浏览器行为。引用MDN name
和length
都是window
对象的属性。
为了摆脱所有特定于DOM的声明,您可以相应地在lib
中设置tsconfig
属性。你可以看到this page上的所有选项。看一下--lib
标志。
告诉TypeScript你的代码在Node.JS上运行的选项会很好。但它似乎尚未实施:https://github.com/Microsoft/TypeScript/issues/9466