Разве "find" не существует на любом типе машинописного или javascript массива?

Обратите внимание на сообщение об ошибке внизу: "config.ts(19,28): ошибка TS2339: свойство" find "не существует в типе" Ответ [] ". Я думал, что все массивы будут иметь метод "найти".

Я уверен, что у меня что-то не хватает!

enter image description here

Ответ 1

Начиная с TypScript 2.0 вы также можете использовать флаг компилятора --lib или раздел "lib": [] в файле tsconfig.js чтобы включить функции ES6, но все еще нацеливаясь на ES5. См. Https://github.com/Microsoft/TypeScript/issues/6974

В этом случае просто tsconfig.js следующие параметры конфигурации в tsconfig.js:

...
"lib": [ "es6" ],
"target": "es5"
...

Ответ 2

Просто для следующего человека, который приходит на эту страницу, и находит, что другие ответы не работают или запутываются:

Добавьте это в файл tsconfig.json:

"compilerOptions": {
    "lib": [
      "es6"
    ],
    "target": "es5"
 }

Ответ 3

Как говорилось ранее, функция find действительно является частью ES6.

Мы исправили его, используя filter и взяв первый элемент результирующего массива.

Ответ 4

с "lib": ["es6"] Я получаю больше ошибок, меньше с ["es2017", "dom"]:

  "compilerOptions": {
       "module": "es6",
        "lib": [ "es2017", "dom" ]
        ...............
  }

И он решает проблему с [].find()

Ответ 5

Итак... Если вы используете TypScript, вы можете использовать Array.prototype.find(), потому что Bookscript - это надмножество javascript. НО, потому что вы "компилируете" на ES5, вы получаете ошибку, потому что поиск метода является частью ES6 (ES2015), но не ES5.

Мне потребовалось некоторое время, чтобы понять этот очевидный факт. Это не ваш машинописный текст, а то, к чему вы стремитесь.

Ответ 6

Просто завершение всех других ответов. Создайте tsconfig.json в корневом каталоге вашего проекта и убедитесь, что у вас есть это в вашей конфигурации:

{
  ... (other configs)
  "compilerOptions": {
    "lib": [ "es2017", "dom" ],
    "target": "es5"
  }
  ... (other configs)
}