在Typescript接收函数中使用Array.from未定义错误



我试图在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]这样的数组析构函数语法是不起作用的。

如果要进行析构函数,请使用对象析构函数来提取nameversion:

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);
});

最新更新