2016-09-21 57 views
1

的任何簽字所以我有這樣的功能:打字稿提供的參數不匹配,調用對象的

function foo(a, b, c, d, e) { 
    // something creative 
} 

當我這樣稱呼它:

foo(1, 2, 3, 4, 5); 

它工作正常。

...但是,當我這樣稱呼它:

const lastTwo = [4, 5]; 
foo(1, 2, 3, ...lastTwo); 

打字稿尖叫說:

error TS2346: Supplied parameters do not match any signature of call target.

我如何克服呢?

回答

1

你需要使用apply function,但你也需要有陣列中的所有PARAMS:

const args = [1, 2, 3, 4, 5]; 
foo.apply(null, args); 
1

的原因是,你的方法簽名的參數AA具體的數字,但你用可變數量的參數調用它。您可以通過更改簽名來解決此問題。

function foo(a, b, c, ...remaining) { 
    // something creative 
} 

const lastTwo = [4, 5]; 
foo(1, 2, 3, ...lastTwo); 
相關問題