我被困在"无法创建抽象类的实例' 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的所有派生类?
答案 0 :(得分:1)
而不是将返回类型声明为抽象类,而是将返回类型定义为返回类实例的构造函数:
declare function f(a: Function): new() => AbtClsInstanceType;