У меня следующий класс:
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));
Тогда это работает. Я получаю свой массив элементов категории.
Заранее спасибо!
У меня работает, если я запускаю этот код в Игровая площадка TypeScript (чернила детской площадки в pastebin; слишком долго для комментария). Я вижу аксессоры в консоли. Обновите свой вопрос, добавив минимальный воспроизводимый пример, демонстрирующий проблему.
@FelixKling, проверял через отладку.
@ T.J.Crowder Я постараюсь привести более полный пример.
Причина, по которой я спросил, заключается в том, что то, что вы описываете, невозможно, по крайней мере, с кодом, который вы опубликовали. Поэтому точное знание того, как вы пришли к своему выводу, может помочь нам выявить ошибку в вашем подходе.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)

