WebStorm - Использование оператора Spread Returns: ошибка TS2488: Тип '{}' должен иметь метод [Symbol.iterator] () ', который возвращает итератор - PullRequest
0 голосов
/ 27 ноября 2018

Я испытываю эту досадную ошибку 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 голосов
/ 27 ноября 2018

Я исправил проблему.Я заметил, что в 'lib' файле tsconfig.json «es2015» не было указано (как предложено в этом ответе), но это по какой-то причине ничего не изменило.

Итак, я подошел к функции '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(/^.*\\/, "")
        }
    ], [])
}
...