typescript1.5 - Implementera funktion utan namn i Typescript


Jag försöker implementera en funktion utan namn på detta sätt:

interface I {
    (name: string): void;    
}

class C implements I {
    (name: string):void { }
}

Jag vill använda C på det här sättet, men det fungerar inte:

C("test");

Jag kan skriva det i javascript och använda gränssnittsdeklarationen: I("test");

Men jag vill göra samma sak i Typescript.

Svar #1

Du kan inte göra det på klasser, men du kan göra det med en vanlig funktion:

interface I {
    (name: string): void;
}

var C: I = function(name: string) {

};

C("test"); // ok
C(1);      // compile error

Om du sedan ändrar ditt gränssnitt kommer du att meddelas av ett kompilatorfel att ändra C-funktionen.

Relaterade artiklar