Eine typisierte Array von Funktionen

stimmen
43

Ich bin zu kämpfen, um herauszufinden, ob es möglich ist, in Typoskript eine statisch typisierte Array von Funktionen zu erklären.

Zum Beispiel kann ich dies tun:

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

Aber wenn ich foo will eine Reihe von Funktionen, die eine Zeichenfolge nehmen und zurück nichts, wie mache ich das?

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

Geh nicht, weil Typoskript denkt, es ist eine Funktion, die einen String und gibt ein Array von Leere, und es scheint nicht zu mögen ich versuchen, die Funktion in Klammern zu wickeln.

Irgendwelche Ideen?

Antwort : Dank mohamed unten, hier ist ein Beispiel , das in dem Typoskript Spielplatz funktioniert:

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();
Veröffentlicht am 04/10/2012 um 20:41
quelle vom benutzer
In anderen Sprachen...                            


2 antworten

stimmen
61

Sie können dies in der finden Sprache spec Abschnitt 3.5.5:

foo: { (data: string): void; } []
Beantwortet am 04/10/2012 um 20:55
quelle vom benutzer

stimmen
28

Andere (neuere, lesbar) Möglichkeiten, um eine Vielzahl von Funktionen unter Verwendung von Fett Pfeilen eingeben:

let foo: Array<(data: string) => void>;
let bar: ((data: string) => void)[];
Beantwortet am 23/04/2017 um 15:28
quelle vom benutzer

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