Typescript: Type af en funktion, der tager et funktionsargument - får "; forventet" fejl


Jeg har en klasse, der har en egenskab, som er en funktionstype, der tager en funktion som argument. TypeScript-kompilatoren giver en "; forventet"-fejl på den anden =>. Nogen idé om hvorfor? Koden er nedenfor.

class Foo{
    public fn: ((string) => void) => void;
}

var foo = new Foo();
foo.fn = function(logger: (string) => void): void{
    logger("bar");
};

var writeToConsole = function(str: string): void {
    console.log(str);
}

foo.fn(writeToConsole);

Svar #1

Fordi den indre funktion har brug for et navn, og først derefter kan du angive dens type:

public fn: (inner: (string) => void) => void;

Selvfølgelig er inner vilkårlig, ændr det efter eget ønske. Se det fungere på Typescript-legeredskabet (bemærk: bruger forkortet url fordi det originale link indeholder parenteser, som ødelægger markdown, og jeg har ikke lyst til at escape dem alle)

Relaterede artikler