2017-05-10 35 views

回答

1

您确实可以这样做,但您需要指定与xtn对象相交的值的类型是实例化结果值的构造函数。

因此延长的签名应该看起来像

function extend<T, K>(cls: new (...args: {}[]) => T, xtn: K): new (...args: {}[]) => T & K; 

打字稿仍然会错误,如果MyClass的不知道是施工的。

我们可以重载extend解决这个如下

function extend<T, K>(cls: (...args: {}[]) => T, xtn: K): new (...args: {}[]) => T & K; 
function extend<T, K>(cls: new (...args: {}[]) => T, xtn: K): new (...args: {}[]) => T & K; 
+0

我要如何进行新的阶级背景。 '这个.'?可能吗 ? – bigopon

+0

我不确定你的意思。你在谈论静态成员还是超类访问或者其他不同的东西? –

+0

编辑:我想我想要的是不可能的,因为我希望这在结果中是相同的。 – bigopon