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

如何在TypeScript的Global.d.ts中声明带附加函数的模块导出类型?

问题场景

我有一个npm模块@mycompany/module,模块导出函数someTool,同时在该函数上附加了canUseFeature1方法,JS代码如下:

// @mycompany/module
const someTool = (options) => {
  // do some cool stuff
};

someTool.canUseFeature1 = () => {
  return canUseSomeFeature1();
};

module.exports = someTool;

目前我已在Global.d.ts中完成了导出函数的类型声明:

declare module '@mycompany/module' {
  export default function (options: any): any;
}

请问如何以类似方式声明someTool.canUseFeature1的类型?


解决方案

你需要定义一个兼具函数类型与额外属性的接口,来描述这个既可以调用、又带有附加方法的导出对象。修改Global.d.ts中的模块声明如下:

declare module '@mycompany/module' {
  // 定义接口:既是函数,又包含canUseFeature1方法
  interface SomeTool {
    (options: any): any;
    canUseFeature1(): boolean; // 根据实际返回值调整类型,这里假设返回boolean
  }

  // 导出该接口作为默认导出
  export default SomeTool;
}

说明

  • 接口中(options: any): any描述了函数本身的调用签名
  • 接口内的canUseFeature1(): boolean则声明了附加方法的类型,你可以根据实际返回值替换boolean为对应类型(比如void或其他)
  • 这种方式可以完美适配外部模块的函数对象类型声明,解决你之前无法适配的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 06:01:17