You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在TypeScript中创建带默认值的全局变量并正常访问?

解决TypeScript全局变量无法访问的问题

问题根源

你在.d.ts类型声明文件中直接给全局变量赋值了,但这类文件仅用于定义类型和变量的类型约束,不能包含具体的赋值逻辑。这就导致TypeScript能识别变量类型,但运行时找不到实际的变量值,所以提示test1 is not defined。

修复步骤

  1. 修正声明文件(Customer.d.ts)
    只保留类型声明,移除赋值代码:

    export {};
    
    declare global {
      var test1: KeyValue[];
    
      interface KeyValue {
        key: number;
        value: string;
      }
    }
    

    (注:接口名改用大驼峰KeyValue,符合TypeScript编码规范)

  2. 创建变量实现文件(比如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' }
    // ];
    
  3. 确保实现文件优先执行
    在项目入口文件(如main.ts、index.ts)中引入这个实现文件,保证它在其他业务代码之前加载:

    import './global-vars.ts';
    
    // 后续代码可正常访问test1
    console.log(test1);
    

补充说明

TypeScript的声明文件(.d.ts)只负责为类型检查提供依据,实际的变量初始化逻辑必须放在普通的.ts文件中,这样才能在运行时被执行,让全局变量真正存在于环境中。

内容的提问来源于stack exchange,提问作者Allied Prox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 17:40:41