Videregivelse af 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);
}

Kaldet til m1(1,2,3) virker som forventet. Dog vil kaldet m2("abc",1,2,3) blive videreført til m1([1,2,3]), ikke som forventet: m1(1,2,3).

Så, hvordan sender man args som argumenter, når man kalder m1 i m2?

Svar #1

Faktisk vil det at bruge ... igen, når man kalder metoden, fungere.

Det genererer apply-kaldet for dig 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

Brug Function.prototype.apply:

T.m1.apply(this, args);

Hvor T er den omsluttende klasse for m1.

Relaterede artikler