J'ai du mal à comprendre s'il est possible en TypeScript de déclarer un tableau de fonctions typées statiquement.
Par exemple, je peux faire ceci :
foo: (data:string) => void = function (data) {};
Mais si je veux que foo soit un tableau de fonctions qui prennent une chaîne et ne renvoient rien, comment faire ?
foo: (data:string) => void [] = [];
Cela ne fonctionne pas parce que TypeScript pense qu'il s'agit d'une fonction qui prend une chaîne et renvoie un tableau de void, et il ne semble pas apprécier que j'essaie d'envelopper la fonction dans des parenthèses.
Des idées ?
Respuesta : Grâce à mohamed ci-dessous, voici un exemple qui fonctionne dans le TypeScript 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();