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

TypeScript导入场景下内置类型声明合并失效问题如何解决

问题原因
  • TypeScript 会将包含import/export语句的文件识别为独立模块,模块内声明的类型默认仅在当前模块作用域生效,不会自动与全局内置类型合并。
  • 带import的文件中你定义的interface Function,本质是在模块作用域新建了一个仅含applyParams属性的自定义同名类型,而非和全局内置的Function接口合并,因此函数实例f与你自定义的Function类型无共通属性,触发TS2559报错。
解决方案

如果需要在模块文件中扩展全局内置类型,需要显式将扩展声明包裹在declare global块中,修改后代码如下:

import { MyType } from "./MyType";

declare global {
  interface Function {
    applyParams?(aa: string[]): MyType;
  }
}

function f() {}

const a: Function = f;

a.applyParams && a.applyParams(["1", "2"]);

如果该类型扩展是项目全局通用的,建议将声明放到独立的.d.ts类型声明文件中:

  • 若声明文件无任何import/export语句,直接写interface Function的扩展即可,默认会作用到全局。
  • 若声明文件也存在导入导出语句,仍需要用declare global包裹扩展内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 13:57:05