在 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 块来添加全局类型声明。