我使用Angular 2
。我也有StatisticsService
具有此方法:
getComingStatistics(): Promise<Map<String, number>> {
const url = `${this.eventUrl}/rest/report/statistic/coming`;
return this.http.get(url)
.toPromise()
.then(response => {
return response.json().data as Map<String, number>
})
.catch(this.handleError);
}
我从组件发出此调用:
constructor(private statisticsService: StatisticsService) {}
comingStatistics: Map<String, number>;
allComingUsers: number;
ngOnInit(): void {
this.statisticsService.getComingStatistics().then(comingStatistics => {
console.log(comingStatistics);
console.log(comingStatistics.values());
});
}
问题出在这行
console.log(comingStatistics.values());
中。我有一个例外:Uncaught (in promise): TypeError: comingStatistics.values is not a function
。同样,地图的任何一种方法都不起作用(例如
keys()
,forEach
等)。只有一种获取值的方法:comingStatistics['someKey']
。如何获得地图的所有键和值?
最佳答案
类型断言欺骗类型系统以考虑结果映射
return response.json().data as Map<String, number>
但这不会使
data
对象成为地图。应该将其转换为
Map
才能成为地图:return new Map(Object.entries(response.json().data));