TypeScript:anonymouse类工厂

时间:2017-02-20 07:37:03

标签: javascript generics typescript

My TypeScript v2.2。

我有这个班级工厂:

export class A { name: string; }

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

  newClass.prototype.name = name;

  return newClass;
}

TypeScript抛出错误:

  

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

我可以说这个工厂返回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']

1 个答案:

答案 0 :(得分:0)

当您使用Factory设计模式时,您可能希望屏蔽Factory选择的确切实现类,而只是返回A(或其接口)。因此,我认为返回A只是诀窍,不需要泛型等......