'Set'仅指类型,但在此处用作值。 (TS2693)

时间:2017-10-11 13:28:50

标签: 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)

有什么建议吗?

1 个答案:

答案 0 :(得分:5)

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

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

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

或者,如果您不想更改目标,但希望编译代码,请在es6选项中添加lib

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

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