考虑一下:
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进行“应用”?
答案 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');