Un tableau typé de fonctions

voix
43

J'ai du mal à savoir s'il est possible dactylographiée de déclarer un tableau statiquement typé de fonctions.

Par exemple, je peux le faire:

foo: (data:string) => void = function (data) {};

Mais si je veux foo être un tableau de fonctions qui prennent une chaîne et retourner rien, comment puis-je faire cela?

foo: (data:string) => void [] = [];

Ne fonctionne pas parce que tapuscrit pense qu'il est une fonction qui prend une chaîne et retourne un tableau semble vide, et il ne me comme essayer d'envelopper la fonction entre parenthèses.

Des idées?

Réponse : Merci à mohamed ci - dessous, voici un exemple qui fonctionne dans le tapuscrit Playground:

class whatever {
public foo: { (data: string): void; }[] = [];

    dofoo() {
        for (var i=0; i < this.foo.length; i++) {
             this.foo[i](test);
        }
    }
}

var d = new whatever();

d.foo.push(function(bar){alert(bar)})
d.foo.push(function(bar){alert(bar.length.toString())})

d.dofoo();
Créé 04/10/2012 à 20:41
source utilisateur
Dans d'autres langues...                            


2 réponses

voix
61

Vous pouvez trouver dans la spec langue section 3.5.5:

foo: { (data: string): void; } []
Créé 04/10/2012 à 20:55
source utilisateur

voix
28

D'autres (les plus récents, plus lisibles) des moyens de taper une gamme de fonctions à l'aide des flèches grasses:

let foo: Array<(data: string) => void>;
let bar: ((data: string) => void)[];
Créé 23/04/2017 à 15:28
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more