在模板字面量中使用 ES6 扩展语法

Using ES6 spread syntax in template literal

我需要动态定义 classes 所以在我的 ES6 代码中写了一个代码生成器:

function makeClass(className, baseClass = _DefaultBaseClass, ...args) {
  return (
    eval(`
      class ${className} extends ${baseClass} {
        constructor(${...args}) {
          super(${...args})
        }
      }
   `)
  )
}

'_DefaultBaseClass'是一个空的class用来简化上面的生成器函数逻辑:

class _DefaultBaseClass() {
  constructor() {}
}

除传播运算符外,生成器代码一切正常。在此示例中,扩展运算符本身在我的项目中的模板文字之外工作正常。

我正在使用以下 webpack Babel presets/plugins:'react'、'es2015'、'stage-2'、'transform-runtime'。

如评论中所述... 绑定到特定用例。 ${...args} 甚至没有多大意义。结果应该是什么?例如。如果 ${...args} 等价于 ${args[0],args[1]},那么它将求得 args[1] 的值,因为这里 , 是一个逗号运算符。

模板文字可以包含任意表达式,因此您可以执行以下操作:

`${args.join(",")}`