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

lan*_*gtu 35 arrays arguments typescript

我有两种方法:

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

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

    //call to m1
    m1(args);
}
Run Code Online (Sandbox Code Playgroud)

呼吁m1(1,2,3)按预期工作.但是,呼叫m2("abc",1,2,3)将转移到m1([1,2,3]),而不是预期:m1(1,2,3).

那么,如何args在调用m1in 时传递参数m2

Ric*_*ove 108

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

它会在javascript中为您生成应用调用.

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

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

    //call to m1

    // m1(args);
    // BECOMES
    m1(...args);
}
Run Code Online (Sandbox Code Playgroud)

  • 是的,当问题第一次提出时,这可能不起作用.但这是现在最好的方式. (7认同)

use*_*016 19

使用Function.prototype.apply:

T.m1.apply(this, args);
Run Code Online (Sandbox Code Playgroud)

其中T是封闭类m1.

  • 不使用这种方法.这是javascript,而不是打字稿.使用Rick Live的回复:) (5认同)