にデコレータを持つコンストラクタをラップするデコレータを持つクラスをラップするプロセスは、スーパークラスは、クラスのプロパティことにアクセスすることができないようにします。どうして?どのように適切に活字体
- はまったく同じことを行う必要があり、新たなコンストラクタを持つクラスのコンストラクタを置き換えデコレータを作成します。
は、私はいくつかのコードを持っています。
- プロパティを持つ基本クラスを作成します。
- ラッピングデコレータで基本クラスをラップします。
- ベースクラスを拡張するクラスを作成します。
- 拡張クラスのプロパティにアクセスしようとします。これが失敗する部分です。ここで
コードです:
function wrap(target: any) {
// the new constructor
var f: any = function (...args) {
return new target();
}
f.prototype = target.prototype;
return f;
}
@wrap
class Base {
prop: number = 5;
}
class Extended extends Base {
constructor() {
super()
}
}
var a = new Extended()
console.log(new Extended().prop) // I'm expecting 5 here, but I get undefined.
私は、これは一般的にどちらかのプロトタイプや活字体は私が把握していないこと、それらを扱う特定の方法のいくつかのニュアンスであると確信しています。
が、私はこの記事からメソッドとプロパティのデコレータについて学んだ:http://blog.wolksoftware.com/decorators -metadata反射・イン・typescriptです-から-初心者ツー専門家 - パートII – TSV