1

デコレータを介してes6クラスを動的にサブクラス化する方法はありますか?

警告:以下は機能しません。議論のためだけです

export function dec(target) {
  var ParentClass = function(...args) {
    console.log('parent ctor')
    target.prototype.apply(this, args); // this probally is not right
  }
  return newParentClass;
}

@dec
class TestClass {
  constructor(...args) {
    super(args);
    console.log('child ctor');
  }
}

この例では、出力は次のようになります。

> parent ctor
> child ctor

効果は例と同じです...

class ParentClass extends TestClass {
  constructor(...args) {
    super(args);
    console.log('parent ctor');
  }
}

これは可能ですか?

4

2 に答える 2

-1

デコレータを介してes6クラスを動的にサブクラス化する方法はありますか?

いいえ、ES6 にはデコレータがないため :-) しかし、将来の言語バージョンで提案が受け入れられたとしても、サブクラス化にデコレータを使用することはありません。代わりに、スーパークラスの式を提供するだけです:

function dynamicExample() {
  return class ParentClass {
    constructor(...args) {
      console.log('parent ctor', args);
    }
  };
}

class TestClass extends dynamicExample() {
  constructor(...args) {
    super(...args);
    console.log('child ctor');
  }
}
于 2016-09-19T08:28:31.947 に答える