Typescript 中的“声明全局”是啥?

Posted

技术标签:

【中文标题】Typescript 中的“声明全局”是啥?【英文标题】:What is 'declare global' in Typescript?Typescript 中的“声明全局”是什么? 【发布时间】:2019-11-24 04:29:55 【问题描述】:

什么是“声明全局”,怎么可能?我在 Lodash 类型中找到了这段代码。问题是,当我尝试将其复制到 my.d.ts 文件中时,因为 global 不是命名空间、模块、函数或 var,我不允许这样做。所以问题是如何在 Typescript 中声明这个声明。

PS 那么也许有一些额外的编译器选项可以实现这一点?

declare global 
    interface Set<T>  

【问题讨论】:

【参考方案1】:

这不依赖于编译器设置。 declare global 在具有importexport 的文件中使用以在全局范围内声明事物。这在包含 importexport 的文件中是必需的,因为这些文件被视为模块,并且在模块中声明的任何内容都在模块范围内。

在不是模块的文件(即不包含import/export)中使用declare global 是错误的,因为这样的文件中的所有内容都在全局范围内。

【讨论】:

是的,这些原理我都是通过实践学会的,但是有官方文档解释吗? @JohnHou 目前有typescriptlang.org/docs/handbook/… 和typescriptlang.org/docs/handbook/declaration-files/templates/…

以上是关于Typescript 中的“声明全局”是啥?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Angular 2 / Typescript 中声明全局变量? [关闭]

TypeScript 中的“as const”是啥意思,它的用例是啥?

TypeScript 中的“类型”保留字是啥?

TypeScript 中的“keyof typeof”是啥意思?

Flow 中星号 (*) 类型的用途是啥,TypeScript 中的等价物是啥?

Typescript 中的枚举类型是啥?