基本上,我试图在我的所有调用中使用HttpClient而不是Http,所以我创建了一个接口,以便能够访问响应的某些属性,它适用于我的大多数调用;但问题是我有这个代码的预先输入:
const URL = 'https://maps.google.com/maps/api/geocode/json';
this.searchField = new FormControl();
this.results$ = this.searchField.valueChanges
.debounceTime(500)
.switchMap(query => this.http.get(`${URL}?address=${query}`))
.map(response => response)
.map(response => response.results);
我尝试在最后两行将我的名为APIResponse的接口分配给response
,如下所示:.map(response:APIResponse => ...)
,但它显然会引发语法错误。
我应该在哪里包含回复类型?或者我怎么能改变我的代码呢?
提前致谢。
答案 0 :(得分:4)
就个人而言,我会这样做:
.map(response => response.json() as ApiResponse)
.map(response => response.results);
顺便说一句,如果您要使用角度4.3中引入的新HttpClient
,则无需手动转换为JSON,只需编写:
this.httpClient.get<ApiResponse>(`${URL}?address=${query}`
.map(response => response.results);
答案 1 :(得分:2)
如果您添加了类型,则需要使用()
:
.map((response:APIResponse) => ...)