【问题标题】:'Set' only refers to a type, but is being used as a value here. (TS2693)'Set' 仅指一种类型,但在这里用作值。 (TS2693)
【发布时间】:2017-10-11 13:28:50
【问题描述】:

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

let arr: number[] = [1,2,3,1];

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

但在这里我遇到打字稿编译器错误

'Set' only refers to a type, but is being used as a value here. (TS2693)

有什么建议吗?

【问题讨论】:

    标签: typescript


    【解决方案1】:

    Set 作为 ES6 的一部分添加。如果您的目标是 ES5 或更低版本,您将收到此错误。

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

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

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

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

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

    【讨论】:

    • 或者,如果您只需要来自es6 lib 的集合,您可以改用es2015.collection
    猜你喜欢
    • 1970-01-01
    • 2018-01-14
    • 2019-10-08
    • 2019-07-30
    • 1970-01-01
    • 2017-12-03
    • 1970-01-01
    • 2019-07-05
    • 2017-08-24
    相关资源
    最近更新 更多