Typescript ';设置';仅引用类型,但在此处用作值。(TS2693)

Typescript ';设置';仅引用类型,但在此处用作值。(TS2693),typescript,Typescript,考虑以下代码来检查数组是否有重复项 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) 有什么建议吗

考虑以下代码来检查数组是否有重复项

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)

有什么建议吗?

Set
已作为ES6的一部分添加。如果您的目标是ES5或更低,则会出现此错误

您可以通过将目标升级到
tsconfig.json
中的
es6
来解决此问题:

"compilerOptions": {
    "target": "es6",
    // ...
}
或者,如果您不想更改目标,但希望编译代码,请将
es6
添加到
lib
选项中:

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

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

或者,如果您只需要
es6
lib中的集合,则可以使用
es2015.collection