TypeScript 在哪里找到它的变量声明?
Where does TypeScript find its variable declarations?
tsc
编译器总是愉快地编译 console.log("foo")
。变量 console
在哪里声明?即使在我的 tsconfig.json
中关闭了所有 lib
,编译器也会接受这个程序。那么 console
是否被认为是普遍的?还有哪些其他变量总是被声明?更一般地说,我如何才能找出存在哪些其他声明,以及它们来自哪里? (我能找到的唯一调试标志是 --extendedDiagnostics
,但它似乎几乎没用。)
TypeScript 分发了一组 lib.*.d.ts
声明文件,这些文件描述了各种 JavaScript 运行时提供的标准库 API。
console
在其中描述。
语言根据 --target
选项确定这些文件中的哪些文件适用,自动将它们包含在编译上下文中。
例如 "target": "es5"
将导致编译器在编译上下文中包含 lib.es5.d.ts
。
您可以使用 --lib
选项明确配置应该引用哪些 built-in 声明文件。
例如"lib": ["es2015", "dom", "dom.iterable"]
.
如果您使用 IDE 的导航功能,Visual Studio 代码中的“转到定义”,将导航到控制台的装饰,让您看到它在哪里.
其他声明文件,例如各种 @types
包提供的声明文件,也可能提供描述 JavaScript 运行时 API 的潜在重叠声明。这实际上是一个很好的行为,因为它允许包描述它们提供的附加功能。
例如@types/node
包含这样的装饰
当由 3rd 方包声明时,这些额外的全局声明文件的包含由 --types
选项控制,而不是 --lib
选项。
例如"types": ["node"]
.
包含这些类型不受 --target
选项的影响。
tsc
编译器总是愉快地编译 console.log("foo")
。变量 console
在哪里声明?即使在我的 tsconfig.json
中关闭了所有 lib
,编译器也会接受这个程序。那么 console
是否被认为是普遍的?还有哪些其他变量总是被声明?更一般地说,我如何才能找出存在哪些其他声明,以及它们来自哪里? (我能找到的唯一调试标志是 --extendedDiagnostics
,但它似乎几乎没用。)
TypeScript 分发了一组 lib.*.d.ts
声明文件,这些文件描述了各种 JavaScript 运行时提供的标准库 API。
console
在其中描述。
语言根据 --target
选项确定这些文件中的哪些文件适用,自动将它们包含在编译上下文中。
例如 "target": "es5"
将导致编译器在编译上下文中包含 lib.es5.d.ts
。
您可以使用 --lib
选项明确配置应该引用哪些 built-in 声明文件。
例如"lib": ["es2015", "dom", "dom.iterable"]
.
如果您使用 IDE 的导航功能,Visual Studio 代码中的“转到定义”,将导航到控制台的装饰,让您看到它在哪里.
其他声明文件,例如各种 @types
包提供的声明文件,也可能提供描述 JavaScript 运行时 API 的潜在重叠声明。这实际上是一个很好的行为,因为它允许包描述它们提供的附加功能。
例如@types/node
包含这样的装饰
当由 3rd 方包声明时,这些额外的全局声明文件的包含由 --types
选项控制,而不是 --lib
选项。
例如"types": ["node"]
.
包含这些类型不受 --target
选项的影响。