如何在TypeScript中创建带默认值的全局变量并正常访问?
解决TypeScript全局变量无法访问的问题
问题根源
你在.d.ts类型声明文件中直接给全局变量赋值了,但这类文件仅用于定义类型和变量的类型约束,不能包含具体的赋值逻辑。这就导致TypeScript能识别变量类型,但运行时找不到实际的变量值,所以提示test1 is not defined。
修复步骤
修正声明文件(Customer.d.ts)
只保留类型声明,移除赋值代码:export {}; declare global { var test1: KeyValue[]; interface KeyValue { key: number; value: string; } }(注:接口名改用大驼峰
KeyValue,符合TypeScript编码规范)创建变量实现文件(比如global-vars.ts)
在单独的文件中完成全局变量的初始化:// 浏览器环境 (window as any).test1 = [ { key: 1, value: 'test' }, { key: 2, value: 'test2' } ]; // 如果是Node.js环境,替换为: // global.test1 = [ // { key: 1, value: 'test' }, // { key: 2, value: 'test2' } // ];确保实现文件优先执行
在项目入口文件(如main.ts、index.ts)中引入这个实现文件,保证它在其他业务代码之前加载:import './global-vars.ts'; // 后续代码可正常访问test1 console.log(test1);
补充说明
TypeScript的声明文件(.d.ts)只负责为类型检查提供依据,实际的变量初始化逻辑必须放在普通的.ts文件中,这样才能在运行时被执行,让全局变量真正存在于环境中。
内容的提问来源于stack exchange,提问作者Allied Prox
相关产品推荐
相关产品推荐

