9

クラスを動的に定義する必要があるため、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」。

4

1 に答える 1