Una matrice tipizzata di funzioni

voti
43

Sto lottando per capire se è possibile a macchina di dichiarare una matrice a tipizzazione statica di funzioni.

Ad esempio, posso fare questo:

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

Ma se voglio foo ad essere una serie di funzioni che richiedono una stringa e restituiscono nulla, come posso fare questo?

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

Non funziona perché dattiloscritto pensa che sia una funzione che prende una stringa e restituisce un array di vuoto, e non sembra come me cercando di avvolgere la funzione tra parentesi.

Qualche idea?

Risposta : Grazie alla mohamed di sotto, ecco un esempio che funziona nel dattiloscritto Parco giochi:

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();
È pubblicato 04/10/2012 alle 20:41
fonte dall'utente
In altre lingue...                            


2 risposte

voti
61

È possibile trovare questo nella specifica lingua punto 3.5.5:

foo: { (data: string): void; } []
Risposto il 04/10/2012 a 20:55
fonte dall'utente

voti
28

Altri (recenti più leggibili,) modi per digitare una serie di funzioni mediante frecce grassi:

let foo: Array<(data: string) => void>;
let bar: ((data: string) => void)[];
Risposto il 23/04/2017 a 15:28
fonte dall'utente

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