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