1. ホーム
  2. タイプスクリプト

[解決済み】Typescriptのマップを繰り返し処理する

2022-04-11 19:25:43

質問

typescriptのマップを反復処理しようとしているのですが、何度もエラーが発生し、このような些細な問題に対する解決策をまだ見つけることができません。

私のコードは

myMap : Map<string, boolean>;
for(let key of myMap.keys()) {
   console.log(key);
}

そして、Errorが出る。

型 'IterableIteratorShim<[string, boolean]>' は、配列型または文字列型ではありません。

フルスタックトレース

 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です。 どなたかこの問題に直面した方はいらっしゃいますか?

解決方法は?

を使用することができます。 Map.prototype.forEach((value, key, map) => void, thisArg?) : void 代わりに

このように使用します。

myMap.forEach((value: boolean, key: string) => {
    console.log(key, value);
});