请考虑以下代码,以检查数组是否有重复项。
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)
有什么建议吗?
答案 0 :(得分:5)
Set
是ES6的一部分。如果您的目标是ES5或更低,则会出现此错误。
您可以通过将目标升级到es6
中的tsconfig.json
来解决此问题:
"compilerOptions": {
"target": "es6",
// ...
}
或者,如果您不想更改目标,但希望编译代码,请在es6
选项中添加lib
:
"compilerOptions": {
"lib": ["es6"],
// ...
}
请注意,如果运行时环境不支持Set
类,则使用此方法,则会引发运行时错误。