Я делаю запрос на получение сервера от углового клиента.Служба, в которой я выполняю вызовы, должна возвращать наблюдаемое с массивом объектов.Проблема в том, что машинопись не позволяет мне приводить JSON к моему интерфейсу.
Это объект JSON, который сервер отправляет в ответ:
export interface Message {
title: string;
body: string;
}
Это интерфейс, к которому я хочу привести тело.Там тело должно содержать массив этих объектов:
export interface ICommonGameCard {
id: string;
pov: POVType;
title: string;
image_pair?: ICommonImagePair;
best_time_solo: number[];
best_time_online: number[];
}
export enum POVType{Simple, Free};
Этот сервис, выполняющий запросы:
public getGameCards(povType: POVType): Observable<ICommonGameCard[]> {
return this.http.get<ICommonGameCard[]>(this.BASE_URL + this.GET_ALL_CARDS_URL)
.pipe(
map((res: Response) => return <ICommonGameCard>res.json().body),
catchError(this.handleError<Message>("getUsernameValidation")),
);
}
Очевидно, это не работает.Я пытаюсь привести JSON ответа к интерфейсу сообщения, а затем получить доступ к телу интерфейса сообщения, где находится массив ICommonGameCard.
Я получаю эту ошибку:
[ts]
Argument of type 'OperatorFunction<Response, ICommonGameCard>' is not assignable to parameter of type 'OperatorFunction<ICommonGameCard[], ICommonGameCard>'.
Type 'Response' is missing the following properties from type 'ICommonGameCard[]': length, pop, push, concat, and 26 more. [2345]
Что именно не так с моим синтаксисом?