問題は、スーパーメソッドが呼び出される前にコンストラクター内からクラスの静的プロパティにアクセスする方法です。
class A
{
constructor(input) {
console.log('A', typeof new.target);
}
}
class B extends A
{
static template = '';
constructor() {
console.log('B', typeof new.target);
super();
}
}
class C extends B
{
static template = 'CCC';
}
new C();
何らかの理由で私が得た:
B undefined
A undefined
それ以外の
B function
A function
私はすでに約1年前にこの質問をしました。今のところ、提供されているソリューションは実行できません。
コードはbabel consoleで試すことができます。興味深いのは、このコードは、babel がなくても (最新の Chrome などで)、es2015チェックボックスがオフの場合に正常に動作することです。