首页 > 解决方案 > 在函数中扩展一个类并保持输入

问题描述

我正在尝试在函数内部扩展一个类,同时保留原始类的类型。

该函数接受一个Model类并用一些额外的信息扩展它,然后返回新扩展的类。

我想避免any在这里使用,因为我不想丢失Model给你的打字。

export default function attach(ModelClass: typeof Model, options: AttachOptions) {
  class AttachedClass extends ModelClass {

     // override some static methods here based on `options`
  }

  return AttachedClass;
}

我得到这个错误虽然

Return type of exported function has or is using private name 'AttachedClass'. on line 1

标签: typescript

解决方案


我假设错误来自声明文件生成?

您需要注释attach. 您可以使用添加到类的静态端的方法声明一个接口AttachMethods,然后创建返回类型typeof Model & AttachMethods。使返回类型依赖于选项比较棘手,但很可能是可行的;如果您提供更多信息,我可以提供帮助。


推荐阅读