在TypeScript中将数组作为参数传递

53

我有两个方法:

static m1(...args: any[]) {
    //using args as array ...
}

static m2(str: string, ...args: any[]){
    //do something
    //....

    //call to m1
    m1(args);
}

对于调用 m1(1,2,3), 一切正常。然而,调用 m2("abc",1,2,3) 将会传递给 m1([1,2,3]),而不是预期的 m1(1,2,3)

所以,在调用 m2 时如何将 args 作为参数传递给 m1 呢?

2个回答

141

实际上,在调用该方法时再次使用 ... 将起作用。

这将在 JavaScript 中为您生成 apply 调用。

static m1(...args: any[]) {
    //using args as array ...
}

static m2(str: string, ...args: any[]){
    //do something
    //....

    //call to m1

    // m1(args);
    // BECOMES
    m1(...args);
}

9
这可能在问题首次提出时并不适用,但现在这是最佳方法。 - Rick Love

22

是的,在这种情况下传递 this 将使得 m1 中的 this 指向外部上下文 (m2) 中的对象。仍需要一种方法来在 m1 中引用 thism1 部分。 - langtu
我正在使用0.9.5版本,但我的输出结果是错误的。实际上,我的代码调用了A.m1()和B.m2(),因此我通过调用m1.apply(A,args)来解决问题,并且它非常好用。再次感谢! - langtu
6
不使用这种方法。它是JavaScript,不是TypeScript。使用Rick Live的响应 :) - Chklang

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接