AngularHTTP服务返回隐藏在对象中的结果,如何添加类型?

AngularHTTP服务返回隐藏在对象中的结果,如何添加类型?,angular,typescript,Angular,Typescript,我有一个名为FilmService的Angular服务,它使用HttpClient模块从API获取数据。当组件使用此服务时,它将获得类型为Film的胶片数组。但是,API将这些胶片对象埋在results对象中(例如{results:[]})。我使用了map操作符来处理可观察对象并返回结果对象。但是,我的IDE正在抱怨我的映射函数中的结果类型: 类型“Object”上不存在属性“results” 如何正确键入服务方法 请看下面我的代码 接口:Film.ts: export interface Fi

我有一个名为FilmService的Angular服务,它使用HttpClient模块从API获取数据。当组件使用此服务时,它将获得类型为
Film
的胶片数组。但是,API将这些胶片对象埋在
results
对象中(例如
{results:[]}
)。我使用了
map
操作符来处理可观察对象并返回
结果
对象。但是,我的IDE正在抱怨我的
映射
函数中的
结果
类型:

类型“Object”上不存在属性“results”

如何正确键入服务方法

请看下面我的代码

接口:Film.ts:

export interface Film {
  id: number;
  title: string;
}
getMostPopular(): Observable<Film[]> {
  return this.http.get(this.apiUrl, {
    params: {
      api_key: this.apiKey,
      sort_by: 'popularity.desc'
    }
  }).pipe(
    map((films) => films.results) // Property 'results' does not exist on type 'Object'.
  );
}
电影服务方式:

export interface Film {
  id: number;
  title: string;
}
getMostPopular(): Observable<Film[]> {
  return this.http.get(this.apiUrl, {
    params: {
      api_key: this.apiKey,
      sort_by: 'popularity.desc'
    }
  }).pipe(
    map((films) => films.results) // Property 'results' does not exist on type 'Object'.
  );
}
getMostPopular():可观察{
返回this.http.get(this.apirl{
参数:{
api_key:this.apiKey,
排序方式:'popularity.desc'
}
}).烟斗(
map((films)=>films.results)//类型“Object”上不存在属性“results”。
);
}

如果api将所有响应嵌入同一类包装器对象中,则可以定义通用响应类型。
HttpClient
有一个泛型类型参数(对于大多数操作),表示返回类型

大概是这样的:

export interface ApiResponse<T> {
    results: T;
    errors: string[];
}
导出接口响应{
结果:T;
错误:字符串[];
}
然后按以下方式使用:

return this.http.get<ApiResponse<Film[]>>(...).pipe(map(response => response.results));
返回这个.http.get(…).pipe(map(response=>response.results));