TypeScript:匿名类工厂

ktr*_*yak 5 javascript generics typescript

我的 TypeScript v2.2。

我有这个班级工厂:

export class A { name: string; }

export function makeConstructor(name: string)
{
  const newClass = class extends A { };

  newClass.prototype.name = name;

  return newClass;
}
Run Code Online (Sandbox Code Playgroud)

打字稿抛出错误:

导出函数的返回类型具有或正在使用私有名称“(匿名类)”。

我可以说这个工厂返回any隐藏错误,但我如何解释究竟返回了什么?

我试着写

  • makeConstructor<T extends A>(name: string): T
  • makeConstructor<T extends typeof A>(name: string): T
  • makeConstructor<T extends A['prototype']>(name: string): T['prototype']

Dot*_*ert -1

当您使用工厂设计模式时,您可能应该想要屏蔽工厂选择的确切实现类,而只返回 A (或其接口)。因此,我认为返回 A 就可以解决问题,不需要泛型等......