类型“HttpEvent<MovieResponse>”上不存在属性“结果”。打字稿错误

问题描述 投票:0回答:1

我目前正在我的 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) => {

如有任何帮助,我们将不胜感激。

angular typescript rxjs get angular-httpclient
1个回答
0
投票

尝试添加

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' })

Stackblitz 演示

© www.soinside.com 2019 - 2024. All rights reserved.