Typovaného pole funkcí

hlasů
43

Já snaží se přijít na to, jestli je možné na stroji prohlásit staticky zadali řadu funkcí.

Například, mohu to následujícím způsobem:

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

Ale pokud chci foo bude řada funkcí, které se řetězec a nic vrátit, jak to mám udělat?

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

Nefunguje, protože strojopisem si myslí, že je to funkce, která trvá řetězec a vrátí pole prázdna, a nezdá se, abych se snaží zabalit funkce v závorce.

Nějaké nápady?

Odpověď : Díky Mohamed níže, zde je příklad, který pracuje ve strojopisu 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();
Položena 04/10/2012 v 20:41
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
61

Můžete je najít v spec jazykové sekce 3.5.5:

foo: { (data: string): void; } []
Odpovězeno 04/10/2012 v 20:55
zdroj uživatelem

hlasů
28

Ostatní (novějšími, čitelný) způsoby, jak psát řadu funkcí pomocí šipek tuk:

let foo: Array<(data: string) => void>;
let bar: ((data: string) => void)[];
Odpovězeno 23/04/2017 v 15:28
zdroj uživatelem

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