Javascript / Typescript:Array.prototype.map函数中的新类实例不持久

时间:2018-06-23 16:15:16

标签: javascript typescript instances array.prototype.map

我有以下课程:

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元素数组。

谢谢!

0 个答案:

没有答案