在 TypeScript 中,declare module 'global'
是一个特殊的模块声明,用于扩展全局作用域中的对象或接口。这通常用于为浏览器环境中的全局对象(如 window
)或 Node.js 环境中的全局对象(如 global
)添加类型声明。
当你在 TypeScript 中使用全局变量或函数,而这些变量或函数没有显式的类型声明时,TypeScript 编译器可能会报错,因为它不知道这些全局变量或函数的类型。通过 declare module 'global'
,你可以为这些全局变量或函数提供类型声明,从而消除类型错误。
以下是一个简单的例子,展示了如何使用 declare module 'global'
为 window
对象添加一个全局函数:
declare global {interface Window {myGlobalFunction(): void;}
}// 现在你可以在 TypeScript 代码中调用这个全局函数,而不会有类型错误
window.myGlobalFunction();
在这个例子中,declare global
是一个块级作用域,它允许你在全局作用域中声明新的接口或扩展现有的接口。在这个块内部,你可以定义新的全局变量、函数或类,并给它们指定类型。
需要注意的是,declare module 'global'
通常用于在 TypeScript 文件中添加全局类型声明。然而,从 TypeScript 2.4 开始,更推荐的做法是使用 declare global
块来扩展全局作用域,而不是使用 declare module 'global'
。这是因为 declare global
块更明确地表示你是在扩展全局作用域,而不是声明一个新的模块。
因此,虽然 declare module 'global'
在某些旧代码库中仍然可见,但更现代的 TypeScript 代码通常使用 declare global
块来添加全局类型声明。