Typescript提供的参数与调用目标的任何签名都不匹配

时间:2016-09-21 11:26:13

标签: javascript typescript

所以我有这样的功能:

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.

我怎样才能克服它?

2 个答案:

答案 0 :(得分:1)

您需要使用apply function,但您还需要拥有数组中的所有参数:

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

答案 1 :(得分:1)

原因是您的方法签名具有特定数量的参数,但您使用可变数量的参数调用它。您可以通过更改签名来解决此问题。

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

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