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

TypeScript声明文件ambient上下文const初始化器报错修复方法

错误原因

.d.ts是TypeScript的类型声明文件,文件内的顶层声明都属于环境上下文(ambient context),这类文件的唯一作用是给已经存在的运行时代码补类型描述,本身不会被编译成可执行JS。
你在环境上下文里用declare const声明变量时,直接给变量赋了普通对象字面量,违反了TS的语法限制:环境上下文中的const初始化值只能是字符串字面量、数字字面量或者字面量枚举引用,不支持对象、数组这类需要运行时初始化的结构,编译器就会抛出你看到的报错。

修复方法

根据实际使用场景二选一即可:

  • 仅需要声明Icons类型,不需要在声明文件里写实际运行值
    删掉declare const后面的对象初始化逻辑,只保留类型结构声明就行:
    declare const Icons: {
      linkedin: string;
      twitter: string;
    };
    export default Icons;
    export type Keys = keyof typeof Icons;
    
    这种纯类型声明不会触发语法错误,Keys类型也能正常推导为"linkedin" | "twitter"。
  • 既要导出Icons的实际运行值,又要导出对应的键类型
    别把这段代码放在.d.ts声明文件里,移到普通的.ts文件中即可。普通.ts不属于环境上下文,完全支持对象字面量初始化:
    const Icons = {
      linkedin: "test",
      twitter: "test2"
    } as const;
    export default Icons;
    export type Keys = keyof typeof Icons;
    

提示:如果需要让Keys精准推导为字面量联合类型"linkedin" | "twitter",避免被TS宽化为string,给常量加as const修饰是通用的稳妥方案,写类型声明和运行时代码都适用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 02:33:27