Å sende en array som argumenter i TypeScript


Jeg har to metoder:

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

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

    //call to m1
    m1(args);
}

Kallet til m1(1,2,3) fungerer som forventet. Imidlertid vil kallet m2("abc",1,2,3) bli videreformidlet til m1([1,2,3]), ikke som forventet: m1(1,2,3).

Så, hvordan kan man sende args som argumenter når man kaller m1 i m2?

Svar #1

Egentlig vil det å bruke ... igjen når man kaller metoden fungere.

Den genererer apply-kallet for deg i 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);
}

Svar #2

Bruk Function.prototype.apply:

T.m1.apply(this, args);

Hvor T er den omsluttende klassen til m1.

Relaterte artikler