【问题标题】:How to call var-args member function with array of params?如何使用参数数组调用 var-args 成员函数?
【发布时间】:2014-10-24 01:38:06
【问题描述】:

考虑一下:

class A
{
    fa(...args: any[])
    {
        //args always has length of one
        //and the first value in args is an array
    }
}

var a = new A();
class B
{
    f1(...args: any[])
    {
       args.unshift('something');
       a.fa.apply(args);
    }
}

这不会编译,因为 fa() 不是静态函数。这个例子解决了 fa() 为静态的情况:Passing array as arguments in TypeScript

但是当 fa 是成员函数时,我怎样才能对它进行“应用”呢?

【问题讨论】:

标签: typescript variadic-functions


【解决方案1】:

apply 的第一个参数是this,所以只需使用a

修复了你的a.fa.apply

class A
{
    fa(...args: any[])
    {
        console.log(args.length == 3); // true
        console.log(args);
    }
}
var a = new A();

class B
{
    fb(...args: any[])
    {
       args.unshift('second');
       a.fa.apply(a,args);
    }
}
var b = new B();
b.fb('first','second');

【讨论】:

  • 这是正确答案。但是我在示例中缺少的一件事是,当您调用 apply 时,您可以拥有 2 个 args、thisArg 和 args。因此,如果您要添加其他 args,则必须将它们取消转换为 args。这是我丢失的钥匙。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-11
  • 1970-01-01
  • 1970-01-01
  • 2022-11-16
  • 2023-02-06
  • 2019-08-22
相关资源
最近更新 更多