在模板字面量中使用 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(",")}`
我需要动态定义 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(",")}`