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

扩展@types/module-a类型时遇TypeScript导出赋值错误求助

解决TypeScript扩展类型时的"An export assignment cannot be used in a module with other exported elements"报错

这个问题我之前在项目里踩过坑,本质是export assignment(比如export = XXX)和其他导出元素不能在同一个模块里共存,而你在扩展module-a的类型时刚好触发了这个规则。下面给你两种针对性的解决方法:

情况1:原模块用export assignment导出类型

如果@types/module-a里的module-a.d.ts是用export =的方式导出核心类型(比如下面这种结构):

// @types/module-a/module-a.d.ts
declare module 'module-a' {
  interface ModuleA {
    originalProperty: number;
  }
  export = ModuleA;
}

那你在扩展的时候,绝对不能在扩展文件里添加任何顶层的export或export =语句,直接在模块声明内部扩展原有类型即可:

// src/module-a.augmented.d.ts
declare module 'module-a' {
  // 直接给原ModuleA接口添加新属性
  interface ModuleA {
    businessSpecificProperty: string;
  }
}

TypeScript会自动合并同模块下的同名接口,这样就不会触发报错,同时也完成了类型扩展。

情况2:原模块用ES模块规范导出

如果原模块是用ES模块的export语法导出的(比如export interface ModuleA { ... }),那你要确保扩展文件的结构和原模块一致,不要误用export =。正确的扩展方式是:

// src/module-a.augmented.d.ts
declare module 'module-a' {
  export interface ModuleA {
    businessSpecificProperty: string;
  }
}

额外注意事项

  • 检查你的tsconfig.json,确保include数组包含了src/**/*.d.ts,让TypeScript能识别到你的扩展文件;
  • 如果原模块导出的是类(declare class ModuleA)或命名空间(declare namespace ModuleA),扩展逻辑和接口一致,直接在declare module 'module-a'内部添加属性或方法即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:21:45