Я пытаюсь сопоставить ответ моего GET-запроса с классом сущности. При вызове функции для этого объекта ответа возникает ошибка:
TypeError: res.foo is not a function
GET-запрос:
this.http.get<TodoEntity>('https://jsonplaceholder.typicode.com/todos/1').subscribe((res) => {
console.info(res.foo());
})
Класс сущности:
export class TodoEntity {
public userId: number;
public id: number;
public title: string;
public completed: boolean;
public foo(): string {
return 'Hello world';
}
}
Есть ли способ сопоставить ответ непосредственно с классом сущности и вызвать для него функцию? Или мне нужно вручную создать новый экземпляр TodoEntity на основе объекта ответа?
Я использую typescript 3.1.6 с angular 7.3.6.





Вам нужно создать экземпляр класса. Эти методы недоступны, если вы преобразуете свой JSON в прототипный класс JavaScript/TypeScript.
Редактировать: Просто нашел хорошее объяснение здесь: https://stackoverflow.com/a/22875957/894532
Вы можете использовать оператор RxJS map для создания экземпляра TodoEntity из набора свойств, возвращаемых веб-сервисом, используя Object.assign:
this.http.get('https://jsonplaceholder.typicode.com/todos/1').pipe(
map(res => Object.assign(new TodoEntity(), res))
).subscribe((res: TodoEntity) => {
console.info(res.foo());
});