WebStorm-使用Spread运算符返回:错误TS2488:类型“ {}”必须具有返回迭代器的“ [Symbol.iterator]()”方法

时间:2018-11-27 09:08:30

标签: angular typescript ecmascript-6 webstorm

我遇到了这个烦人的TypeScript错误:

  

错误TS2488:类型'{}'必须具有返回迭代器的'Symbol.iterator'方法。

正如您在我的代码中看到的那样,我正在使用传播运算符。经过一些研究,我发现我必须用tsconfig.json更新我的"target": "es6",但没有任何改变。我想念什么?

功能

 formatFileName(e) {
    let files = e.target.files;
    this.test = Array.from(files).reduce((acc, cur) => [
        ...acc, {
            name: cur.name.replace(/^.*\\/, "")
        }
    ], [])
 }

TS CONFIG

{
  "compileOnSave": false,
  "compilerOptions": {
    "baseUrl": "./",
    "outDir": "./dist/out-tsc",
    "sourceMap": true,
    "declaration": false,
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "allowSyntheticDefaultImports": true,
    "target": "es6",
    "typeRoots": [
        "node_modules/@types"
    ],
    "lib": [
        "es2017",
        "dom"
    ]
   }
 }

TS CONFIG APP(如果有帮助)

{
  "extends": "../tsconfig.json",
  "compilerOptions": {
    "outDir": "../out-tsc/app",
    "module": "es2015",
    "types": [],
    "moduleResolution": "node",
    "target": "es6",
  },
 "exclude": [
    "src/test.ts",
    "**/*.spec.ts"
  ]
}

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。我注意到在“ lib” tsconfig.json文件中未显示“ es2015”(如this答案中所建议),但是由于某种原因,它没有进行任何更改。

所以我转到功能'formatFileName(e)'并分配给this.test文件数组,在此声明之后,我应用了reduce函数进行操作。

固定功能

 formatFileName(e) {
    let files = e.target.files;
    this.test = Array.from(files)
    this.test.reduce((acc, cur) => [
        ...acc, {
            name: cur.name.replace(/^.*\\/, "")
        }
    ], [])
}