Un conjunto de tipos de funciones

votos
43

Estoy luchando para averiguar si es posible a máquina de escribir para declarar una matriz de tipos estáticos de funciones.

Por ejemplo, yo puedo hacer esto:

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

Pero si quiero Foo ser un conjunto de funciones que toman una cadena y nada a cambio, ¿cómo puedo hacer eso?

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

No funciona porque mecanografiado piensa que es una función que toma una cadena y devuelve una matriz de vacío, y no parece que les gusta de mí tratando de envolver la función entre paréntesis.

¿Algunas ideas?

Respuesta : Gracias a Mohamed a continuación, he aquí un ejemplo que funciona en el texto mecanografiado Zona de juegos:

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();
Publicado el 04/10/2012 a las 20:41
fuente por usuario
En otros idiomas...                            


2 respuestas

votos
61

Usted puede encontrar esto en la especificación de lenguaje de la sección 3.5.5:

foo: { (data: string): void; } []
Respondida el 04/10/2012 a las 20:55
fuente por usuario

votos
28

Otros (más legibles nuevos, formas) para escribir una serie de funciones utilizando las flechas de grasa:

let foo: Array<(data: string) => void>;
let bar: ((data: string) => void)[];
Respondida el 23/04/2017 a las 12:28
fuente por usuario

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