“Set”仅是一种类型,但在此处被用作值。(TS2693)

5
考虑下面这段检查数组是否有重复项的代码。
let arr: number[] = [1,2,3,1];

function hasDuplicates (arr: number[]): boolean {
  return new Set(arr).size !== arr.length;
}

但是在这里我遇到了TypeScript编译器错误。
'Set' only refers to a type, but is being used as a value here. (TS2693)

有什么建议吗?
1个回答

5

Set是ES6的一部分。如果你的目标是ES5或更低版本,那么你会得到这个错误。

你可以通过在tsconfig.json中将目标升级到es6来解决这个问题:

"compilerOptions": {
    "target": "es6",
    // ...
}

如果您不想更改目标,但希望您的代码编译,请将es6添加到您的lib选项中:

"compilerOptions": {
    "lib": ["es6"],
    // ...
}

请注意,使用这种方法,如果运行环境不支持Set类,则会抛出运行时错误。

或者,如果您只需要es6库中的集合,可以使用es2015.collection - Ondrej Slinták

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接