我正在为线框图应用创建一个应用。我正在开发一个用于从线框应用程序的数据生成链接的功能,该功能将由部分中不可预测的部分组成。这些部分的界面形状如下
export interface ProjectObject{
title: string;
link?: string;
summary?: string;
description?: DescriptionPoint[];
sections?: ProjectObject[];
elements?: ProjectElement[];
challenges?: ProjectChallenges[];
feedback?: ProjectFeedbackItem[];
}
我要做的是从每个对象中提取title
和link
属性,并将其存储在这样的变量中
export interface NavLink{
title: string;
link: string;
subLinks?: NavLink[]
}
title和link属性当然是要从每个对象中提取的属性。 subLinks
属性用于保存要从sections
属性的其他部分检索的嵌套链接。
我想出了以下功能,试图提取并形成链接
createProjectLinks(data: ProjectObject[]){
return data.map(a=>{
let links: NavLink = {
title: a.title,
link: a.link,
subLinks: this.createProjectLinks(a.sections)};
return links;
});
}
将ProjectObject
s数组传递给它时,出现以下错误
错误TypeError:无法读取未定义的属性“地图”
起初我以为这是一个异步问题,但是我在组件上方直接创建了一个const
用作虚拟数据,以避免异步问题,并且在将虚拟数据传递到函数中时仍然遇到相同的错误。我究竟做错了什么?我有更好的方法来实现此功能吗?
答案 0 :(得分:0)
以下错误不是打字稿问题,而是JavaScript问题
TypeError: Cannot read property 'map' of undefined
执行此操作
createProjectLinks(data: ProjectObject[] = []){ //give default value of [] to prevent mapping on undefined data
return data.map(a=>{
let links: NavLink = {
title: a.title,
link: a.link,
subLinks: this.createProjectLinks(a.sections)};
return links;
});
}