Set仅指一种类型,但它被用作值 - WebStorm

时间:2017-09-26 11:40:02

标签: angular typescript webstorm typescript-typings

我有一个用webpack驱动的Angular 4项目。 我在项目中使用了TypeScript,并且我使用WebStorm作为IDE。

在我的代码中,我使用Set没问题。

我想在单元测试中使用Set来从模拟函数返回一个值。

当我尝试使用new Set(['A', 'B'])时,我在WebStorm中看到错误:

  

Set仅指一种类型,但它被用作值

此错误来自TSLint(我假设)但是当我手动运行TSLint类时,我在Iterm中看不到相同的错误(所以我假设它是WebStorm,它不能识别Set)。

在WebStorm配置中,启用TSLint并查看tsconfig.json,这是tsconfig.json的compilerOptions部分:

{
  "compilerOptions": {
    "target": "es6",
    "module": "commonjs",
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "allowSyntheticDefaultImports": true,
    "sourceMap": true,
    "noEmit": true,
    "noEmitHelpers": true,
    "importHelpers": true,
    "strictNullChecks": false,
    "lib": [
      "es6",
      "es2017",
      "dom"
    ],
    "typeRoots": [
      "node_modules/@types"
    ],
    "types": [
      "hammerjs",
      "jasmine",
      "node",
      "source-map",
      "uglify-js",
      "webpack"
    ],
  },
}

知道为什么WebStorm抱怨(只在单元测试中)?

1 个答案:

答案 0 :(得分:1)

我找到了一个解决方案,不确定它是不是很好但是我安装了@ types / es6-collections

npm install --save-dev @types/es6-collections

并将其添加到tsconfig.json中:

"types": [
      "es6-collections",
      "hammerjs",
      "jasmine",
      "node",
      "source-map",
      "uglify-js",
      "webpack"
    ],

这为我删除了webstorm的错误