我有以下课程:
class Category {
static ObjectMapToCategory(id: number, display: string, name: string): Category {
return new Category(id, display, name);
}
constructor(private id: number, private display: string, private name: string) {
}
get Id(): number {
return this.id;
}
get Display(): string {
return this.display;
}
get Name(): string {
return this.name;
}
};
从API端点获取另一个此类的数组:
class CategoryModel {
constructor(public id: number, public display: string, public name: string) {
}
}
假设我将API响应存储在:
let apiResponseArray:CategoryModel[];
这个想法是将这个数组转换为Category []类型的另一个数组。为此,我使用Array.prototype.map函数:
let categoriesArray:Category[] = apiResponseArray.map(categoryModelElement => new Category(categoryModelElement.id, categoryModelElement.display, categoryModelElement.name));
尽管如此,我最终得到一个仅包含以下属性的对象数组:id,display和name。但是类(类别)的属性(获取器)Id,显示和名称丢失了。有什么想法吗?从地图返回后,垃圾收集器与删除新的Category实例有关吗?因此,它不是作为类实例而是作为普通对象?那是我唯一的想法...
相反,如果我这样做:
let categoriesArray:Category[] = [];
apiResponseArray.forEach(categoryModelElement => categoriesArray.push(new Category(element.id, element.display, element.name));
然后,它起作用了。我得到了我的Category元素数组。
谢谢!