O matrice tastate de funcții

voturi
43

Mă chinui să dau seama dacă este posibil dactilografiat pentru a declara o serie de funcții tastat static.

De exemplu, eu pot face acest lucru:

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

Dar dacă vreau foo să fie o serie de funcții care să ia un șir de caractere și returnează nimic, cum fac asta?

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

Nu funcționează pentru că typescript crede că este o funcție care ia un șir de caractere și returnează un tablou de vid, și nu pare să-mi place încercând să-și încheie funcția în paranteze.

Vreo idee?

Răspuns : Datorită Mohamed de mai jos, iată un exemplu , care funcționează în typescript 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();
Întrebat 04/10/2012 la 20:41
sursa de către utilizator
În alte limbi...                            


2 răspunsuri

voturi
61

Puteți găsi acest lucru în spec limba secțiunea 3.5.5:

foo: { (data: string): void; } []
Publicat 04/10/2012 la 20:55
sursa de către utilizator

voturi
28

Altele (mai noi, mai ușor de citit) modalități de a introduce o serie de funcții care utilizează săgeți de grăsime:

let foo: Array<(data: string) => void>;
let bar: ((data: string) => void)[];
Publicat 23/04/2017 la 15:28
sursa de către utilizator

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