在函数中扩展类并保持键入

时间:2018-09-06 01:52:41

标签: typescript

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

该函数接受一个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

1 个答案:

答案 0 :(得分:0)

我认为错误是由于声明文件生成引起的?

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