2016-09-21 70 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); 
相关问题