使用新 Set 删除数组中的重复项会出错
removing duplicates in an array with new Set gives an error
我正在尝试使用新 Set 删除数组中的重复项时出现错误 "new Set(names).slice is not a function"
const names = ["Mike","Matt","Nancy","Adam","Jenny","Nancy","Carl"];
const uniq = [ ...new Set(names) ];
console.log(uniq);
这是 stackblitz
上的 code
当您的代码通过构建阶段并从 TypeScript 转换为 JavaScript 时,您发布的第二行变为:
var uniq = new Set(names).slice();
就我个人而言,我会认为这是一个 TypeScript 错误,但我从未使用过 TypeScript,所以我不能肯定地说。
edit — 实际上我不认为它会发生,除非你的目标是 ES5。
我能够通过在项目的根目录中添加 tsconfig.json
来修复错误。这是一个超级简单的配置:
{
"compilerOptions": {
"target": "es6"
}
}
发生的事情是 TypeScript 正在编译为 javascript 的 es3
版本,如果没有将目标配置为 shown here,这是默认版本(参见 --target
) .
我正在尝试使用新 Set 删除数组中的重复项时出现错误 "new Set(names).slice is not a function"
const names = ["Mike","Matt","Nancy","Adam","Jenny","Nancy","Carl"];
const uniq = [ ...new Set(names) ];
console.log(uniq);
这是 stackblitz
上的 code当您的代码通过构建阶段并从 TypeScript 转换为 JavaScript 时,您发布的第二行变为:
var uniq = new Set(names).slice();
就我个人而言,我会认为这是一个 TypeScript 错误,但我从未使用过 TypeScript,所以我不能肯定地说。
edit — 实际上我不认为它会发生,除非你的目标是 ES5。
我能够通过在项目的根目录中添加 tsconfig.json
来修复错误。这是一个超级简单的配置:
{
"compilerOptions": {
"target": "es6"
}
}
发生的事情是 TypeScript 正在编译为 javascript 的 es3
版本,如果没有将目标配置为 shown here,这是默认版本(参见 --target
) .