2017-12-19 9 views
0

Da es TypedPropertyDescriptor gibt, mit dem Methoden-Dekoratoren definiert werden können, gibt es eine Möglichkeit, den Compiler auf Parametertypen dekorierter Methoden zu verweisen?Gibt es eine Art Inferenz für Methodendekorator in TypeScript?

function test(
    target: any, 
    propName: string | symbol, 
    descriptor: TypedPropertyDescriptor<(x: number) => any> 
) { 
} 

class T { 
    @test 
    log(n) { // <-- compiler complains that n has type of implicit any 

    } 
} 

Als (x: number) => any in TypedPropertyDescriptor verabschiedet wurde, bedeutet dies, dass alle von test dekoriert Methoden der (x: number) => any Typ sein sollte, damit über Codeprüfung geben sollte.

So unterstützt TypeScript diese Art von Inferenz noch nicht, oder vermisse ich etwas, das diesen Code-Typ überprüfen könnte?

+0

Vielleicht Hilfe https://github.com/SierraSoftworks/Iridium/blob/release/lib/Decorators.ts –

Antwort

1

Es gibt viele Fälle, in denen TypeScript contextual typing übernimmt, aber das ist keiner.

den Typ Anmerkung zum Parameter hinzufügen:

class T { 
    @test 
    log(n: number) { 

    } 
} 

Die Art noch in Bezug auf den Dekorateur geprüft wird, obwohl der Dekorateur keine Informationen kontextuellen Typ liefert: dieser Wille

class T { 
    @test 
    log(n: string) { // ERROR! 

    } 
} 
Verwandte Themen