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

时间:2017-03-07 02:21:25

标签: ecmascript-6 template-literals

我需要动态定义类,所以在我的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'。

1 个答案:

答案 0 :(得分:2)

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

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

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