javascript - 在 Typescript 接收函数中使用 Array.from 未定义错误
问题描述
我尝试在我的 Typescript 应用程序中使用一些 ES6 语法,并希望在映射可观察对象数组时将 for-of 循环更改为 Array.from,但我收到 undefine is not a function 错误。
Array.from(item.modules, ([value]) =>
selectedImage.setModules(
moudleWithThumbnail(value.name, value.version).name,
moudleWithThumbnail(value.name, value.version).version,
moudleWithThumbnail(value.name, value.version).thumbnail
));
但如果我用另一种方式写,它工作正常
const arr = Array.from(item.modules);
arr.map((item: any) =>
selectedImage.setModules(
moudleWithThumbnail(item.name, item.version).name,
moudleWithThumbnail(item.name, item.version).version,
moudleWithThumbnail(item.name, item.version).thumbnail
)
);
我不知道他们之间有什么区别。
解决方案
使用([value]) =>
,您将参数(项目)的第一个可迭代属性解构为value
变量名称。但是你item
是一个对象,而不是一个可迭代的(如数组) - 所以像数组解构语法一样[value]
不起作用。
如果您想解构,请改用对象解构,提取name
和version
:
Array.from(item.modules, ({ name, version }) =>
selectedImage.setModules(
moudleWithThumbnail(name, version).name,
或者不要解构:
Array.from(item.modules, (item) =>
selectedImage.setModules(
moudleWithThumbnail(item.name, item.version).name,
或者,减少代码重复性的更好策略是moudleWithThumbnail
只调用一次(如果可行的话):
Array.from(item.modules, (item) => {
const { name, version, thumbnail } = moudleWithThumbnail(item.name, itemversion);
return selectedImage.setModules(name, version, thumbnail);
});