“find”不存在于任何类型的typescript或javascript数组中吗?

b1zrtrql  于 2023-05-19  发布在  TypeScript
关注(0)|答案(8)|浏览(168)

请注意底部的错误消息:“config.ts(19,28):错误TS 2339:类型“Answer[]”上不存在属性“find”。我以为所有的数组都有一个“find”方法。
我肯定我错过了什么!

krcsximq

krcsximq1#

从Typescript 2.0开始,您还可以使用--lib编译器标志或tsconfig.js文件中的"lib": []部分来包含ES6功能,同时仍然针对ES5。参见https://github.com/Microsoft/TypeScript/issues/6974
在这种情况下,只需在tsconfig.js中包含以下配置选项:

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

iyfjxgzm2#

为了回答你的问题,它存在于TypeScript中,但不是没有一些配置。
要解决此问题,您需要更新compilerOptions,如下所示:

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

TypeScript 2.0

dkqlctbz

dkqlctbz3#

只是总结了所有其他答案。在你的项目根目录下创建一个tsconfig.json,并确保你的配置中有这个:

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

fzwojiic4#

如前所述,find函数确实是ES6的一部分。
我们通过使用filter来修复它,并获取结果数组的第一个元素。

1l5u6lss

1l5u6lss5#

使用“lib”:[“es6”]我得到的错误更多,使用[“es2017”,“dom”]得到的错误更少:

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

它使用[].find()解决了这个问题

mitkmikd

mitkmikd6#

如果你使用Typescript,那么你可以使用Array.prototype.find(),因为Typescript是javascript的超集。但是因为你'编译'到ES5,你会得到错误,因为方法 find 是ES6(ES2015)的一部分,但不是ES5。
我花了一段时间才意识到这个显而易见的事实。它不是你的 typescript ,而是你的目标。

vkc1a9a2

vkc1a9a27#

我猜答案包含在kkaosninja的评论中:find是es6的一部分,我仍然在es5上:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find

pokxtpni

pokxtpni8#

我在一个node应用程序中遇到了类似的问题。从零开始创建文件。我解决这个问题的方法是将“@types/node”包安装到我的项目中。为了安装这个包,我使用了以下命令
npm install @types/node --save-dev
这个解决方案可能对那些从一开始就开始学习Typescript的人有帮助。

相关问题