Здесь задействованы две структуры данных: внешняя, возвращаемая службой http, которую вы описали в своем вопросе:
interface ActualResponse {
Search: Array<SearchInterface>;
totalResults: string;
Response: string;
}
И та, которая вас волнует, используется для каждого элементаМассив поиска: SearchInterface.
Ваша служба не преобразует ответ, полученный от сервера.Таким образом, его тип возвращаемого значения не может быть Observable<SearchInterface>
: сервер возвращает ActualResponse
, поэтому он должен быть Observable<ActualResponse>
.
Но лучший дизайн, так как вас не волнуют другие частифактического ответа, было бы преобразовать фактический ответ в то, что вы на самом деле волнует: Array<SearchInterface>
.Вы можете сделать это, используя оператор map
:
searchFilm(name: string): Observable<Array<SearchInterface>> {
return this.http.get<ActualResponse>(this.searchUrl + this.apiKey + '&s=' + name).pipe(
map(response => response.Search)
);
}