近期在开发 NutUI 组件库时,发现一个Babel转换 ... new Set()的问题
输入此代码
let abc= [...new Set([1,2,3])];
console.log(abc);
Babel 配置文件
const presets = [
[
'@babel/preset-env',
{
loose: true,
modules: 'commonjs',
targets: {
browsers: ['Android >= 4', 'iOS >= 8']
}
}
]
];
const plugins = [
'@babel/plugin-transform-runtime',
'@babel/plugin-transform-object-assign',
'@babel/plugin-proposal-object-rest-spread'
];
module.exports = { presets, plugins };
期望执行结果 Chrome
let abc= [...new Set([1,2,3])];
console.log(abc); // [1,2,3]
当前执行结果
let abc= [...new Set([1,2,3])];
console.log(abc); // [Set(3)] 0: Set(3) {1, 2, 3}
解决方案
经过搜索发现 loose: true 模式所导致, 解决办法 loose设置为 false
const presets = [
[
'@babel/preset-env',
{
loose: false,
modules: 'commonjs',
targets: {
browsers: ['Android >= 4', 'iOS >= 8']
}
}
]
];
const plugins = [
'@babel/plugin-transform-runtime',
'@babel/plugin-transform-object-assign',
'@babel/plugin-proposal-object-rest-spread'
];
module.exports = { presets, plugins };