如何使用params数组调用var-args成员函数?

时间:2014-08-30 02:34:18

标签: typescript variadic-functions

考虑一下:

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进行“应用”?

1 个答案:

答案 0 :(得分: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');