nodejs - typescript version
Una serie de funciones escritas a máquina (2)
Estoy luchando para descubrir si es posible en TypeScript declarar una matriz de funciones tipada estáticamente.
Por ejemplo, puedo hacer esto:
foo: (data:string) => void = function (data) {};
Pero si quiero que foo sea una serie de funciones que toman una cadena y no devuelven nada, ¿cómo hago eso?
foo: (data:string) => void [] = [];
No funciona porque TypeScript cree que es una función que toma una cadena y devuelve una matriz de vacío, y parece que no me gusta que trate de ajustar la función entre corchetes.
¿Algunas ideas?
Respuesta : Gracias a mohamed a continuación, he aquí un ejemplo que funciona en el área de juegos de TypeScript:
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();
Otras formas (más nuevas y más legibles) de escribir una matriz de funciones usando flechas gordas:
let foo: Array<(data: string) => void>;
let bar: ((data: string) => void)[];
Puede encontrar esto en la sección de especificaciones de lenguaje 3.5.5:
foo: { (data: string): void; } []