2017-04-16 1 views
0

Ich habe mit Mixing-Klassen herumgespielt und hatte Schwierigkeiten zu verstehen, wie sie mit Dekorateuren interagieren.Typescript mixin classes with decorators

Wenn ich einen Dekorator verwende, bekomme ich eine Nachricht in der Art von 'Eigenschaft' _tag 'existiert nicht auf dem Typ OriginalClass, aber es scheint in Ordnung zu sein, wenn ich eine Zwischenklasse erstelle. Soll das so gemacht werden oder gibt es einen anderen Weg dies zu tun?

function mix<T extends Constructor<{}>>(Base: T) { 
    return class extends Base { 
     _tag: string; 
     constructor(...args: any[]) { 
      super(...args); 
      this._tag = ""; 
     } 
    } 
} 
@mix 
class OriginalClass { 
    constructor() { 
     //do something 
    } 
} 
const a = new OriginalClass(); 

// Why does this not work 
a._tag = 'hi' 

// But this does work 
class NewClass extends mix(OriginalClass){}; 
b = new NewClass() 
b._.tag = 'hi' 

Antwort

1

Gegenwärtig werden Klasse-Decorators in Typoskript noch nicht unterstützt.

Es gibt ein offenes Problem, das Sie hier verfolgen können: https://github.com/Microsoft/TypeScript/issues/4881.

+0

Danke, ich wünschte, ich hätte dieses Problem etwas früher gesehen - war ziemlich begeistert von den Mixinklassen. – noveyak