我试图在Typescript应用程序中使用一些ES6语法,并希望在映射可观察对象数组时将for of循环更改为Array.from,但我收到undefine不是函数错误。
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);
});