2016-11-21 73 views
0

我被套牢了与这些代码“无法创建抽象类的AbtCls“的实例”:如何在typescript 2中指定具有类型注释的派生类?

在环境声明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将返回一个unamed子类,但只有TS核对抽象超类。

在这里,我不能改变外部ModuleA的实现同时没有收缩到只有一个派生类中实现。

有什么办法来指定类型标注AbtCls的所有派生类?

+0

我在github上的问题检查一下,没有这个问题提到。在https://github.com/Microsoft/TypeScript/issues/3578中添加的对抽象类的支持没有提及。如果我没有错过任何TS文件。 –

+0

你不能创建抽象类的对象吗?我想你可以尝试没有新的运营商。让c = a(); –

回答

1

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

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

谢谢!这样修复了错误。我不太了解“new()”的文字功能。你知道手册的哪一部分是关于它的吗? –

相关问题