0
デコレータを使ってクラスを拡張したいのですが、その正確さは分かりません。TypeScriptのデコレータでクラスを拡張する
function Foo(value: string) {
return function(target: Function) {
let injected = Object.assign(target.prototype, { foo: value });
return injected;
}
}
@Foo("Hello world")
class Bar {
}
let instance = new Bar();
console.log(instance.foo); // Should say "Hello World"
をしかし、私はもう私のクラスをインスタンス化することはできません:「例外TypeErrorは:バーはコンストラクタではありません」次のように私の現在のアプローチがあります。
私のミスはどこですか?
は、悲しいことに、これは動作しません正常に動作する必要があります。 'bar'オブジェクトは変更されず、' instance.foo'の結果は 'Property 'foo'が 'Bar'型には存在しません。 – nehalist
@nehalistあなたのtsconfigに 'experimentalDecorators'フラグがありますか?私のローカルとプレイグラウンドで動作していますhttps://www.typescriptlang.org/play/ –
@nehalistしかし、あなたがタイプスクリプトからの警告について話しているのであれば、それはTSコンパイラがこのプロパティを解決できないからです。プレイリストで生成されたJSを確認してください –