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

Eth*_*han 6 ecmascript-6 template-literals

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

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

'_DefaultBaseClass'是一个用于简化上述生成器函数逻辑的空类:

class _DefaultBaseClass() {
  constructor() {}
}
Run Code Online (Sandbox Code Playgroud)

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

我正在使用以下webpack Babel预设/插件:'react','es2015','stage-2','transform-runtime'.

a b*_*ver 5

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

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

`${args.join(",")}`
Run Code Online (Sandbox Code Playgroud)