Javascript / Typescript: новый экземпляр класса внутри функции Array.prototype.map не сохраняется - PullRequest
0 голосов
/ 23 июня 2018

У меня есть следующий класс:

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, Display и Name из класса Category теряются. Есть идеи почему? Имеет ли это какое-либо отношение к сборщику мусора, удаляющему новый экземпляр категории после возвращения с карты? И, таким образом, он воспринимается не как экземпляр класса, а как простой объект? Это мои единственные мысли ...

Вместо этого, если я сделаю:

let categoriesArray:Category[] = [];
apiResponseArray.forEach(categoryModelElement => categoriesArray.push(new Category(element.id, element.display, element.name));

Тогда это работает. Я получил свой массив элементов Category.

Заранее спасибо!

...