2017-05-10 97 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