web-dev-qa-db-fra.com

Passer un tableau comme arguments dans TypeScript

J'ai deux méthodes:

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

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

    //call to m1
    m1(args);
}

L'appel à m1(1,2,3) fonctionne comme prévu. Cependant, l'appel m2("abc",1,2,3) passera à m1([1,2,3]), pas comme prévu: m1(1,2,3).

Alors, comment passer args comme arguments lors d'un appel à m1 Dans m2?

32
langtu

Utilisez Function.prototype.apply :

T.m1.apply(this, args);

Où T est la classe englobante de m1.

16
user703016

En fait, en utilisant le ... à nouveau lors de l'appel de la méthode fonctionnera.

Il génère l'appel d'application pour vous en 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);
}
104
Rick Love