我目前正在我的 Angular 18 应用程序中使用这个 TMDB 端点,并将其设置为变量。
这就是它的样子:
private trendingMovies$ = this.http.get<MovieResponse>(${this.apiUrl}trending/movie/day, this.options).pipe(
map((data) => {
data.results.map((movie: Movie) => ({
...movie,
}) as Movie)
}),
shareReplay(1),
);
但是我的地图运算符中的数据对象上的结果属性出现此打字稿错误:
Property 'results' does not exist on type 'HttpEvent<MovieResponse>'.
Property 'results' does not exist on type 'HttpSentEvent'.ts(2339)
这是我用于响应的接口,也是响应中结果数组中单个对象的接口:
export interface MovieResponse {
page: Number;
results: Movie[];
total_pages: Number;
total_results: Number;
}
export interface Movie {
adult: boolean;
backdrop_path: string;
genre_id: Number[];
id: Number;
media_type: string;
original_language: string;
original_title: string;
overview: string;
popularity: Number;
poster_path: string;
release_date: string;
title: string;
video: boolean;
vote_average: Number;
vote_count: Number;
}
我使用了 Tap 运算符将响应记录到控制台,它显然有一个 results 属性,所以我不确定为什么会收到此打字稿错误或如何修复它?
我尝试向此行添加类型,但它仍然显示相同的错误:
map((data: MovieResponse) => {
如有任何帮助,我们将不胜感激。
尝试添加
observeOn: 'body'
,我认为这就是导致问题的原因。
private trendingMovies$ = this.http
.get<MovieResponse>(`${this.apiUrl}trending/movie/day`, { observe: 'response' })
private trendingMovies$ = this.http
.get<MovieResponse>(`${this.apiUrl}trending/movie/day`, { observe: 'body' })