如何在打字稿中使用地图运算符上的类型?

时间:2017-10-22 15:12:00

标签: angular typescript httpclient

基本上,我试图在我的所有调用中使用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 => ...),但它显然会引发语法错误。

我应该在哪里包含回复类型?或者我怎么能改变我的代码呢?

提前致谢。

2 个答案:

答案 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) => ...)