【发布时间】:2016-05-07 09:02:06
【问题描述】:
我有一个数据访问方法,我使用 map 将哈希转换为数组,以便在我的视图中迭代它们:
public getCrawlsStatuses():Observable<ICrawlsStatus[]> {
let _statusesURL:string = `${this.API_URL}/crawl_statuses`;
return this._http.get(_statusesURL)
.map((res:Response) => {
let statuses:ICrawlsStatus[] = [];
Object.keys(res.json()).map(key => {
statuses.push({
name: key,
total: res.json()[key]
})
});
return statuses;
})
.catch(CrawlsService.onError);
}
但是我发现变量状态有点多余,所以决定通过简单地利用 observable 的 map 方法的返回来缩短映射:
public getCrawlsStatuses():Observable<ICrawlsStatus[]> {
let _statusesURL:string = `${this.API_URL}/crawl_statuses`;
return this._http.get(_statusesURL)
.map((res:Response) => {
return Object.keys(res.json()).map(key => {
return {
name: key,
total: res.json()[key]
}
});
})
.catch(CrawlsService.onError);
}
就类型检查而言,这对于这里以外的组件来说可以正常工作,因为他们需要期待crawlsStatuses: ICrawlsStatus[];,但对于我的一生,我找不到一种方法让返回的对象在内部具有类型,类似:
return <ICrawlsStatus>{
name: key,
total: res.json()[key]
}
如果返回的键与我的界面不匹配,我想得到一个错误。例如名字,完全......
【问题讨论】:
标签: typescript angular ecmascript-6