使用新 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) .