@types/node v16报NodeJS无Global导出错误 新版本如何声明全局变量
Node 16及以上版本TypeScript全局变量声明方案
报错根因
@types/node 从v16版本开始移除了原有 NodeJS.Global 接口,全局变量声明改为遵循ECMAScript标准的globalThis扩展方案,因此原有基于NodeJS.Global的扩展写法会抛出类型错误。
正确实现方式
- 新建全局类型声明文件,通常命名为
global.d.ts,放在项目根目录或src目录下,确保该文件在tsconfig.json的include配置覆盖范围内。 - 按如下格式编写声明内容:
declare global { // 此处替换为你需要定义的全局变量名和对应类型 var myGlobalVariable: unknown } // 此行必须保留,将文件标记为模块,才能让全局类型声明生效 export {}
注意事项
- 全局变量必须使用
var关键字声明,使用let、const声明的变量不会挂载到globalThis上,类型声明无法全局生效 - 赋值时可直接使用
globalThis或Node专属的global别名操作变量,不需要额外类型断言:
// 两种赋值方式都兼容 globalThis.myGlobalVariable = '自定义全局值' global.myGlobalVariable = '自定义全局值'
内容的提问来源于stack exchange,提问作者Anthony Luzquiños
相关产品推荐
相关产品推荐

