不能将扩展运算符与三元运算符一起使用
Can't use spread operator with ternary operator
我正在尝试 运行 来自 cross-spawn
包的 spawn
命令,以编程方式使用 npm 安装一些依赖项,这些依赖项可以是汇总包,也可以是 webpack 包, 取决于变量的值 bundler
spawn.sync(
'npm',
[
'add',
'-D',
'svelte',
bundler === 'rollup' ? ...rollupPackages : ...webpackPackages
],
{ cwd: projectPath }
)
但是 typescript 编译器在抱怨,更具体地说是在 rollupPackages
的扩展运算符上,并显示以下消息:
Expression expected. ts(1109)
我假设两个包变量都是数组,并且您想将各个数组值作为自己的值添加到 .sync
调用参数数组中,因此请尝试将整个表达式括在括号中:
spawn.sync(
'npm',
[
'add',
'-D',
'svelte',
(bundler === 'rollup' ? ...rollupPackages : ...webpackPackages)
],
{ cwd: projectPath }
)
找到解决方案,而不是解构三元运算的每个变量,包装整个条件并从外部解构它效果很好,示例如下:
spawn.sync(
'npm',
[
'add',
'-D',
'svelte',
...(bundler === 'rollup' ? rollupPackages : webpackPackages)
],
{ cwd: projectPath }
)
我正在尝试 运行 来自 cross-spawn
包的 spawn
命令,以编程方式使用 npm 安装一些依赖项,这些依赖项可以是汇总包,也可以是 webpack 包, 取决于变量的值 bundler
spawn.sync(
'npm',
[
'add',
'-D',
'svelte',
bundler === 'rollup' ? ...rollupPackages : ...webpackPackages
],
{ cwd: projectPath }
)
但是 typescript 编译器在抱怨,更具体地说是在 rollupPackages
的扩展运算符上,并显示以下消息:
Expression expected. ts(1109)
我假设两个包变量都是数组,并且您想将各个数组值作为自己的值添加到 .sync
调用参数数组中,因此请尝试将整个表达式括在括号中:
spawn.sync(
'npm',
[
'add',
'-D',
'svelte',
(bundler === 'rollup' ? ...rollupPackages : ...webpackPackages)
],
{ cwd: projectPath }
)
找到解决方案,而不是解构三元运算的每个变量,包装整个条件并从外部解构它效果很好,示例如下:
spawn.sync(
'npm',
[
'add',
'-D',
'svelte',
...(bundler === 'rollup' ? rollupPackages : webpackPackages)
],
{ cwd: projectPath }
)