我需要动态定义类,所以在我的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'。
答案 0 :(得分:2)
如评论...
中所述,绑定到特定用例。 ${...args}
甚至没有多大意义。应该是什么结果?例如。如果${...args}
等同于${args[0],args[1]}
,那么它将评估为args[1]
的值,因为此处,
是逗号运算符。
模板文字可以包含任意表达式,因此您可以执行以下操作:
`${args.join(",")}`