为什么Typescript会想到符号' name'永远存在?

时间:2018-04-06 11:15:57

标签: typescript

当我打算写name时,我已经注意到我编写的稿件中的错误被编译器接受了someObject.name

作为测试,我尝试编译仅包含console.log(name)的单个文件,并且tsc接受它。 Typescript是否定义了一些全局符号?

我使用的是Typescript 2.8.1并且没有安装全局软件包,除了NPM本身和Typescript。

1 个答案:

答案 0 :(得分:3)

是的,有一个(默认)用于EcmaScript标准的库,比如ES2016。这个lib叫做“lib.es2016.full.d.ts”(https://github.com/Microsoft/TypeScript/blob/master/lib/lib.es2016.full.d.ts),它包含“name”声明。

在您的编辑器中(如果它不仅仅是记事本,而是Visual Studio Code),您可以从上下文菜单中选择“转到定义”。或者您可以将鼠标悬停在“名称”上方,看看“名称”实际上是哪种类型(它是“从不”和常量)。

这样做是为了限制对全局(Window)名称属性的访问: https://github.com/Microsoft/TypeScript/issues/1351 https://github.com/Microsoft/TypeScript/issues/9850