如何从打字稿中获取Map中的所有键?

时间:2017-05-23 14:56:49

标签: javascript angular typescript

我使用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']

如何获取地图的所有键和值?

1 个答案:

答案 0 :(得分:1)

键入断言作弊类型系统以使用

来考虑结果
return response.json().data as Map<String, number>

但它并没有使data对象成为地图。

它应该转换为Map才能成为地图:

return new Map(Object.entries(response.json().data));