如何使用array.find()与打字稿?

时间:2019-09-05 23:07:27

标签: arrays typescript

使用以下代码,我得到一个错误,指出find()属性不存在:

var foobar = [];
var bar = { value: 123 };
var foo = { value: 456 };
foobar.push(foo, bar);
console.log(foobar.find((obj) => obj.value === 123));

如果我在javascript中使用相同的代码,则可以正常工作。

编辑:也许有点肮脏的解决方法...您可以将foobar强制转换为任何一个,从而避免编译器错误: console.log((foobar as any) .find((obj)=> obj.value === 123));

3 个答案:

答案 0 :(得分:0)

我已经检查了此代码。一切正常。

const bar = { value: 123 };
const foo = { value: 456 };
const foobar = [foo, bar];

console.log(foobar.find((obj) => obj.value === 123));

答案 1 :(得分:0)

由于TypeScript是JavaScript的超集,因此所有代码都应编译为纯JavaScript,因此您的代码应该可以工作。如果不是出于某种原因,请尝试使用TypeScript的filter()方法而不是find()

foobar.filter(obj => obj.value === 123)[0];

答案 2 :(得分:0)

是什么让您出错?是您的浏览器,文本编辑器还是Typescript编译器?

如果是您的浏览器,则需要在target中更改tsconfig.json。尝试es5Internet ExplorerNode 0.12不支持Array.find

如果是您的文本编辑器,则需要修复编辑器设置。确切的设置取决于编辑器。您需要查找Java语言或Typescript语言版本的设置,并将其设置为es6或更高版本。

如果是Typescript编译器...我实际上不知道是什么原因引起的。也许是Typescript的旧版本?