所以我有这样的功能:
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.
我怎样才能克服它?
答案 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);