У меня есть следующий класс:
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.
Заранее спасибо!