Wpisywanych tablicy funkcji

głosy
43

Ja usiłuje dowiedzieć się, czy jest to możliwe w maszynopisie zadeklarować statycznie wpisane wachlarz funkcji.

Na przykład, mogę to zrobić:

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

Ale jeśli chcę foo być tablicą funkcji, które mają ciąg i nic nie wróci, jak mam to zrobić?

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

Nie działa, ponieważ maszynopis uważa, że ​​jest to funkcja, która pobiera ciąg i zwraca tablicę pustki, a nie wydaje mi się podoba próbuje owinąć funkcję w nawiasach.

Jakieś pomysły?

Odpowiedź : Dzięki Mohamed poniżej, oto przykład, który pracuje w maszynopisie 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();
Utwórz 04/10/2012 o 20:41
źródło użytkownik
W innych językach...                            


2 odpowiedzi

głosy
61

Można znaleźć to w językowej specyfikacji sekcji 3.5.5:

foo: { (data: string): void; } []
Odpowiedział 04/10/2012 o 20:55
źródło użytkownik

głosy
28

Inne (nowe, bardziej czytelny) sposoby typu tablicę funkcji, za pomocą strzałek tłuszcz:

let foo: Array<(data: string) => void>;
let bar: ((data: string) => void)[];
Odpowiedział 23/04/2017 o 15:28
źródło użytkownik

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