在任何类型的打字稿或javascript数组中都不存在“查找”?

时间:2015-07-13 16:36:39

标签: typescript

请注意底部的错误消息:“config.ts(19,28):error TS2339:类型'Answer []”上不存在属性'find'。我以为所有数组都有一个“查找”方法。

我确信我错过了什么!

enter image description here

7 个答案:

答案 0 :(得分:17)

自Typescript 2.0以来,您还可以使用--lib文件或"lib": []文件中的tsconfig.js部分来包含ES6个功能,同时仍定位ES5 }。见https://github.com/Microsoft/TypeScript/issues/6974

在这种情况下,只需在tsconfig.js中包含以下配置选项:

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

答案 1 :(得分:6)

仅针对下一个访问此页面的人,发现其他答案无效或令人困惑:

将其添加到您的tsconfig.json文件中:

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

答案 2 :(得分:3)

如前所述,find功能确实是ES6的一部分。

我们使用filter代替并获取结果数组的第一个元素来修复它。

答案 3 :(得分:2)

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

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

它用[] .find()

解决了问题

答案 4 :(得分:1)

所以...如果您使用Typescript,那么您可能正在使用Array.prototype.find(),因为Typescript是javascript的超集。 但是,因为您“编译”到ES5会出现错误,因为 find 方法是ES6(ES2015)的一部分,而不是ES5。

我花了一段时间才意识到这个显而易见的事实。它不是你的打字稿,而是你的目标。

答案 5 :(得分:1)

只是所有其他答案的总结。在项目的根目录中创建一个MongoClients.getDefaultCodecRegistry(),并确保在配置中包含此名称:

new_dict = {key: 'None' if value is None else value for (key, value) in old_dict.items()}

答案 6 :(得分:0)

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