Iterieren über Typescript Map
Ich versuche zu Durchlaufen Typoskript Karte, aber ich bekomme Fehler und ich konnte keine Lösung für solch ein triviales problem.
Mein code ist:
myMap : Map<string, boolean>;
for(let key of myMap.keys()) {
console.log(key);
}
Und ich bekomme die Fehlermeldung:
Typ 'IterableIteratorShim<[string, boolean]>' ist nicht ein array oder ein string-Typ.
Volle Stack-Trace:
Fehler: Typoskript gefunden, das folgenden Fehler:
/home/project/tmp/broccoli_type_script_compiler-input_base_path-q4GtzHgb.tmp/0/src/app/project/project-data.service.ts (21, 20): Geben Sie 'IterableIteratorShim<[string, boolean]>' ist nicht ein array oder ein string-Typ.
bei BroccoliTypeScriptCompiler._doIncrementalBuild (/home/project/node_modules/Winkel-cli/lib/Brokkoli/broccoli-Typoskript.js:115:19)
bei BroccoliTypeScriptCompiler.bauen (/home/project/node_modules/Winkel-cli/lib/Brokkoli/broccoli-Typoskript.js:43:10)
in /home/Projekt/node_modules/Brokkoli-caching-writer/index.js:152:21
bei lib$Anmeldung$die$internen$$tryCatch (/home/project/node_modules/rsvp/dist/rsvp.js:1036:16)
bei lib$Anmeldung$die$internen$$invokeCallback (/home/project/node_modules/rsvp/dist/rsvp.js:1048:17)
bei lib$Anmeldung$die$internen$$veröffentlichen (/home/project/node_modules/rsvp/dist/rsvp.js:1019:11)
bei lib$Anmeldung$asap$$flush (/home/project/node_modules/rsvp/dist/rsvp.js:1198:9)
bei _combinedTickCallback (intern/Prozess/next_tick.js:67:7)
beim Prozess._tickCallback (intern/Prozess/next_tick.js:98:9)
Ich bin mit Winkel-cli-beta5 und Typoskript 1.8.10 und mein Ziel ist es5.
Hat jemand dieses Problem gehabt?
InformationsquelleAutor der Frage mwe | 2016-06-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie
Map.prototype.forEach((value, key, map) => void, thisArg?) : void
stattVerwenden Sie es wie diese:
InformationsquelleAutor der Antwort rinukkusu
Nur Arrays verwendet werden.aus () - Methode auf, konvertiert es in ein Array:
InformationsquelleAutor der Antwort 6qat
InformationsquelleAutor der Antwort WhereDatApp.com
Pro die Typoskript 2.3 release notes auf "Neue
--downlevelIteration
":Dies ist standardmäßig nicht aktiviert! Hinzufügen
"downlevelIteration": true
zu Ihremtsconfig.json
oder pass--downlevelIteration
Flagge zutsc
, erhalten Sie die volle iterator-support.In diesem Ort, können Sie schreiben
for (let keyval of myMap) {...}
undkeyval
's-Typ wird automatisch abgeleitet.Warum ist das standardmäßig deaktiviert? Nach Typoskript Beitrag @aluanhaddad,
Wenn du kannst ES2015 (
"target": "es2015"
imtsconfig.json
odertsc --target ES2015
) oder höher, aktivierendownlevelIteration
ist ein no-brainer, aber wenn Sie sind targeting-ES5/ES3, könnten Sie benchmark, um sicherzustellen iterator-support-keine Auswirkungen auf die Leistung (wenn Sie es tut, Sie könnten besser mitArray.from
Umwandlung oderforEach
oder einen anderen workaround).InformationsquelleAutor der Antwort Ahmed Fasih
Mit Array.aus, Array.der Prototyp.forEach(), und Pfeil-Funktionen:
Iteration über die Schlüssel:
Iteration über die Werte:
Iteration über die Einträge:
InformationsquelleAutor der Antwort Tobold
Ich bin mit der neuesten TS und Knoten (v2.6 und v8.9 jeweils) und ich tun kann:
InformationsquelleAutor der Antwort lazieburd
Dieser arbeitete für mich. Typoskript Version: 2.8.3
InformationsquelleAutor der Antwort Debashish Sen
Wenn Sie nicht wirklich mögen, verschachtelte Funktionen, können Sie auch die Iteration über die Schlüssel:
Hinweis, Sie haben heraus zu filtern, die nicht-Schlüssel-Iterationen mit der
hasOwnProperty
, wenn Sie dies nicht tun, erhalten Sie eine Warnung oder eine Fehlermeldung.InformationsquelleAutor der Antwort peterh