2015-10-01 51 views
1

我在一個Interface像這樣的函數聲明:打字稿功能屬性...任何數量的參數的個數

mixin(desc: MixinDescriptor): any; 

MixinDescriptor的定義如下:

interface MixinDescriptor { [id: string]:() => any; } 

然而,如果我使用mixin這樣的功能:

chance.mixin({ 
    test: function(arg1, arg2) { 
    } 
} 

VSCode會表明它不是正確的定義。它的工作原理是因爲它的實現像那樣工作,但它的接口聲明必須是錯誤的。

我試圖改變MixinDescriptor這樣:

interface MixinDescriptor { [id: string]: (args: any[]) => any; } 

但是,這也不能工作。

我該如何改變它,以便正確識別函數能夠接受命名參數,它們中的任意數量?

回答

1

嘗試這樣的事情

interface MixinDescriptor { 
    [id: string]: (...args: any[]) => any; 
} 

...指示功能可以採取rest of parameters。由於其餘的參數是可選的這個接口適用於任何類型的功能

還要考慮this example

+0

諷刺的是,在我看了看其他的答案,我認爲這是事實上的'...'顯示的代碼,是不是相關。希望這能在將來以相同的方式幫助別人。好答案! –

+0

我很高興幫助你! 祝你好運! –