クラスを動的に定義する必要があるため、ES6 コードにコード ジェネレーターを記述しました。
function makeClass(className, baseClass = _DefaultBaseClass, ...args) {
return (
eval(`
class ${className} extends ${baseClass} {
constructor(${...args}) {
super(${...args})
}
}
`)
)
}
'_DefaultBaseClass' は、上記のジェネレーター関数ロジックを単純化するために使用される空のクラスです。
class _DefaultBaseClass() {
constructor() {}
}
拡散演算子を除いて、すべてがジェネレーター コードで正常に動作します。拡散演算子自体は、この例のテンプレート リテラル以外のプロジェクトで正常に機能します。
次の webpack Babel プリセット/プラグインを使用しています:「react」、「es2015」、「stage-2」、「transform-runtime」。