2017-04-16 8 views
0

ミックスインクラスで遊んでいて、デコレータとのやりとりがわかりにくいです。デコレータ付きミックスインクラス

デコレータを使用すると、 `Property '_tag'の行に沿ったメッセージがOriginalClass型には存在しませんが、中間クラスを作成すると正常に動作するようです。これはこれを行うべきか、これを行う別の方法がありますか?

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' 

答えて

1

現時点では、クラスデコレータはまだtypescriptではサポートされていません。

ここに続く問題は、https://github.com/Microsoft/TypeScript/issues/4881です。

+0

ありがとう、ちょっと早くその問題を見てみたいと思っています - ミックスインクラスについてかなりお伝えしました。 – noveyak

関連する問題