为什么在打字稿中声明一个全局的`name`variables,我可以避免使用它吗?
一位朋友重构了一些代码,并将名为name
的variables的定义从函数的顶级作用域移动到了then
的正文中。 这个variables被用在随后的那个引起一个ReferenceError,因为name
不在范围内。
我们无法理解代码如何通过编译,直到我们看到typescript / lib.d.ts具有以下减速:
declare const name: never;
长话短说,我有两个问题。
- 为什么
name
(以及length
和许多其他全局variables)默认添加到打字稿? - 从周围的代码,这似乎意味着项目打算在浏览器中运行,我们是一个node.js项目。 我们可以select不加这些声明吗?
这似乎是一个非常古老的浏览器行为。 参考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的声明,您可以相应地在您的tsconfig
设置lib
属性。 你不能看到这个页面上的所有选项。 看看--lib
标志。
一个告诉TypeScript你的代码在Node.JS上运行的选项会很好。 但它似乎还没有实现: https : //github.com/Microsoft/TypeScript/issues/9466
- 在Typescript Module Nodejs中导出所有内容
- 用ng服务器启动服务器时出现NPM错误
- 打字稿会忽略NODE_PATHvariables
- 用eval处理打字稿
- Visual Studio 2013可以在NodeJs Web应用程序中debugging客户端JavaScript
- 如何将第三方Javascript文件导入到IntelliJ中,以便我可以在一个Typescript文件中引用它
- Angular 2testing不能加载自定义包
- Aurelia应用程序“Hello World”根本不工作
- 尝试运行Angular Universal时错误“Unexpected token import”