如何在typescript 2中指定带类型注释的派生类?

时间:2016-11-21 09:30:43

标签: typescript

我被困在"无法创建抽象类的实例' AbtCls'"使用这样的代码:

在ModuleA的环境声明中,:

declare function f(a: Function): AbtCls;
export = f;

在普通代码中:

let a = ModulaA('');
let c = new a(); // Error:  "Cannot create an instance of the abstract class 'AbtCls'" 

ModuleA将返回一个未命名的子类,但TS仅检查抽象超类。

这里我不能改变外部ModuleA的实现,同时不能只限制一个派生的实现类。

有没有办法在类型注释中指定AbtCls的所有派生类?

1 个答案:

答案 0 :(得分:1)

而不是将返回类型声明为抽象类,而是将返回类型定义为返回类实例的构造函数:

declare function f(a: Function): new() => AbtClsInstanceType;