【问题标题】:Typescript supplied parameters do not match any signature of call targetTypescript 提供的参数与调用目标的任何签名都不匹配
【发布时间】:2016-09-21 21:42:59
【问题描述】:

所以我有这样的功能:

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

当我这样称呼它时:

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

效果很好。

...但是当我这样称呼它时:

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

Typescript 尖叫:

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

我该如何克服它?

【问题讨论】:

    标签: javascript typescript


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      function foo(a, b, c, ...remaining) {
          // something creative
      }
      
      const lastTwo = [4, 5];
      foo(1, 2, 3, ...lastTwo);
      

      【讨论】:

        猜你喜欢
        • 2017-04-28
        • 2016-06-09
        • 2017-12-04
        • 2017-11-25
        • 2017-08-24
        • 2017-02-25
        • 2017-07-26
        • 2018-03-31
        • 2017-05-08
        相关资源
        最近更新 更多