Een getypte reeks functies

stemmen
43

Ik heb moeite om erachter te komen of het mogelijk is met de schrijfmachine om een ​​statisch getypeerde scala aan functies verklaren.

Bijvoorbeeld, kan ik dit doen:

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

Maar als ik wil foo om een ​​scala aan functies die een string te nemen en niets terug te keren, hoe doe ik dat?

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

Werkt niet, omdat de schrijfmachine denkt dat het een functie die een string neemt en geeft een array van leegte, en het lijkt niet te willen me proberen om de functie tussen haakjes te verpakken.

Iemand een idee?

Antwoord : Met dank aan mohamed hieronder, hier is een voorbeeld dat werkt in de typoscript 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();
De vraag is gesteld op 04/10/2012 om 20:41
bron van user
In andere talen...                            


2 antwoorden

stemmen
61

U kunt deze vinden in de taal spec paragraaf 3.5.5:

foo: { (data: string): void; } []
antwoordde op 04/10/2012 om 20:55
bron van user

stemmen
28

Andere (nieuwere, meer leesbare) manieren om een ​​reeks functies met dikke pijlen typen:

let foo: Array<(data: string) => void>;
let bar: ((data: string) => void)[];
antwoordde op 23/04/2017 om 15:28
bron van user

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