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

TypeScript 如何声明无需window/global即可直接访问的真正全局变量

解决方案
  • 第一步:确认全局声明文件格式正确
    你的全局声明文件(比如globals.d.ts)不要包含任何import/export语句,否则会被TypeScript识别为模块,内部的声明不会自动生效为全局类型。直接写入变量声明即可:
    declare const ENV_IS_PRODUCTION: boolean;
    // 可批量添加其他需要声明的全局注入变量
    declare const ENV_API_DOMAIN: string;
    
    如果你必须在声明文件中引入其他类型(比如给某个环境变量指定自定义类型),则需要用declare global块包裹声明,末尾添加空export标记为模块:
    import type { CustomEnvType } from './your-type-def';
    
    declare global {
      const ENV_IS_PRODUCTION: boolean;
      const ENV_CUSTOM_PARAM: CustomEnvType;
    }
    
    export {};
    
  • 第二步:配置tsconfig.json让TypeScript识别声明文件
    把声明文件所在路径加入include数组,如果是自定义的类型目录,建议同时配置typeRoots:
    {
      "compilerOptions": {
        // 其余原有配置保持不变
        "typeRoots": ["./node_modules/@types", "./你的声明文件所在目录"]
      },
      "include": ["src/**/*", "你的声明文件所在目录/**/*"]
    }
    
  • 第三步:重启TypeScript服务验证生效
    配置完成后重启IDE的TypeScript语言服务(VSCode可按Ctrl+Shift+P/Cmd+Shift+P执行TypeScript: Restart TS Server命令),之后直接使用ENV_IS_PRODUCTION即可,不会报未定义错误,也不会生成window相关前缀代码,完全符合构建替换的要求。

内容的提问来源于stack exchange,提问作者Maciej Kravchyk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 09:45:00