javascript - 如何在 typescript 中从 Map 获取所有键?

标签 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());。我有这个异常:未捕获( promise ):TypeError:comingStatistics.values 不是函数

此外, map 的任何方法都不起作用(例如 keys()forEach 等)。获取值的方法只有一种:comingStatistics['someKey']

如何获取 map 的所有键和值?

最佳答案

类型断言欺骗类型系统将结果视为映射

return response.json().data as Map<String, number>

但它不会使 data 对象成为 map 。

它应该转换为Map才能成为 map :

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

关于javascript - 如何在 typescript 中从 Map 获取所有键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44138356/

相关文章:

javascript - http 当用户关闭浏览器时放置

html - 为什么元素宽度与 offsetWidth 不匹配?

javascript - Ionic 为动态创建的 div 添加点击功能

angular - 如果至少有一个字段具有值,则向响应式(Reactive) FormGroup 的所有控件添加必需的验证

javascript - 在 Angular2 中通过服务向组件添加 css,这可能吗?

javascript - 在文件中搜索关键字,然后记录该行的其余部分

javascript - 远程调查/测量动态页面偶尔加载缓慢的速度

javascript - Strope.js 客户端连接到服务器,断开连接/超时

angular - NgModule 的提供程序无效。只允许 Provider 和 Type 的实例,得到 : [? [object Object]?, ...]

angular - Visual Studio Code Typescript 避免在新行上使用参数