В моем angular проекте у меня есть метод, который возвращает класс User из бэкэнда:
export class User {
id: string;
name: string;
my_list: Array<string>;
get otherNameForMyList() : Array<string> {
return this.my_list;
}
set otherNameForMyList(newList : Array<string>) {
this.my_list = newList;
}
}
, поэтому я вызываю бэкэнд следующим образом:
export class UserService {
getUserFromBE(login: string): Observable<User> {
return this.http
.get<User>(`${environment.apiUrl}/user/${login}`)
.pipe(catchError(this.processHTTPMsgService.handleError));
}
}
Но когда Я вызываю этот метод и подписываюсь на результат, который я не могу использовать otherNameForMyList:
let user = new User();
userService.getUserFromBE('mylogin').subscribe(async (u : User)=>{
console.log(u.otherNameForMyList); // undefined
}
, но если я делаю так, он работает:
let user = new User();
userService.getUserFromBE('mylogin').subscribe(async (u : User)=>{
console.log(u.my_list); // ok result
}
и console.log (u) возвращает тип объекта, а не тип пользователя, как должно быть.
Теперь, если я объявил «: Observable» как тип результата из вызова httpclient в getUserFromBE, разве вы не должны иметь тип User? Можно ли заставить его быть таким?
Очевидно, что API возвращает просто поле my_list.
Может кто-нибудь объяснить, почему вы Object, а не User?
Спасибо