首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >迭代Typescript映射

迭代Typescript映射
EN

Stack Overflow用户
提问于 2016-06-08 18:01:16
回答 12查看 330.5K关注 0票数 205

我正在尝试迭代一个typescript映射,但我总是收到错误,而且我还找不到任何解决这个微不足道的问题的方法。

我的代码是:

代码语言:javascript
复制
myMap : Map<string, boolean>;
for(let key of myMap.keys()) {
   console.log(key);
}

然后我得到了错误:

类型“IterableIteratorShim”不是数组类型或字符串类型。

完整堆栈跟踪:

代码语言:javascript
复制
 Error: Typescript found the following errors:
  /home/project/tmp/broccoli_type_script_compiler-input_base_path-q4GtzHgb.tmp/0/src/app/project/project-data.service.ts (21, 20): Type 'IterableIteratorShim<[string, boolean]>' is not an array type or a string type.
    at BroccoliTypeScriptCompiler._doIncrementalBuild (/home/project/node_modules/angular-cli/lib/broccoli/broccoli-typescript.js:115:19)
    at BroccoliTypeScriptCompiler.build (/home/project/node_modules/angular-cli/lib/broccoli/broccoli-typescript.js:43:10)
    at /home/project/node_modules/broccoli-caching-writer/index.js:152:21
    at lib$rsvp$$internal$$tryCatch (/home/project/node_modules/rsvp/dist/rsvp.js:1036:16)
    at lib$rsvp$$internal$$invokeCallback (/home/project/node_modules/rsvp/dist/rsvp.js:1048:17)
    at lib$rsvp$$internal$$publish (/home/project/node_modules/rsvp/dist/rsvp.js:1019:11)
    at lib$rsvp$asap$$flush (/home/project/node_modules/rsvp/dist/rsvp.js:1198:9)
    at _combinedTickCallback (internal/process/next_tick.js:67:7)
    at process._tickCallback (internal/process/next_tick.js:98:9)

我使用angular-cli beta5和typescript 1.8.10,我的目标是es5。有人遇到过这个问题吗?

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2016-06-08 18:58:00

您可以改用Map.prototype.forEach((value, key, map) => void, thisArg?) : void

像这样使用它:

代码语言:javascript
复制
myMap.forEach((value: boolean, key: string) => {
    console.log(key, value);
});
票数 288
EN

Stack Overflow用户

发布于 2017-05-23 20:23:59

es6

代码语言:javascript
复制
for (let [key, value] of map) {
    console.log(key, value);
}

es5

代码语言:javascript
复制
for (let entry of Array.from(map.entries())) {
    let key = entry[0];
    let value = entry[1];
}
票数 95
EN

Stack Overflow用户

发布于 2017-05-21 07:41:28

只需使用Array.from()方法将其转换为Array

代码语言:javascript
复制
myMap : Map<string, boolean>;
for(let key of Array.from( myMap.keys()) ) {
   console.log(key);
}
票数 49
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37699320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档