Karteninitialisierung in Typoskript [Duplikat]
Ich versuche, unter Map in Typoskript zu initialisieren. Wenn ich es drucke, scheint es leer zu sein.
let map: Map<string, object> = new Map<string, object> ([
[
"api/service/method",
{
uriPath: {}
}
],
[
"\"type\": \"html\"",
{
body: {}
}
]
]);
console.log(JSON.stringify(map));
// printing {}
// but not the initialized values
Antworten
Es wird korrekt initialisiert, aber beim Drucken werden nicht alle Werte wie bei einem Array gedruckt. Sie können dies jedoch überprüfen, indem Sie einfach auf die Schlüssel zugreifen - sie sind vorhanden:
let map = new Map([
[
"api/service/method",
{
uriPath: {}
}
],
[
"\"type\": \"html\"",
{
body: {}
}
]
]);
console.log(map);
console.log(map.get('api/service/method'));
console.log(map.get('"type": "html"'));
Ebenfalls relevant: Wie kann ich ein Javascript ES6-Kartenobjekt in der Konsole anzeigen?
Wie dort angegeben, können Sie die Karte einfach verteilen und ausdrucken:
let map = new Map([
[
"api/service/method",
{
uriPath: {}
}
],
[
"\"type\": \"html\"",
{
body: {}
}
]
]);
console.log([...map]);
Das liegt daran, JSON.stringifydass Sie nicht wissen, wie eine Map zu stringifizieren ist, und stattdessen versuchen, das zugrunde liegende Objekt zu stringifizieren, was zu einem leeren Objekt führt.
Versuchen Sie es console.log(JSON.stringify([...a.entries()]));stattdessen
Das Stringifizieren eines Objekts umfasst das Stringifizieren seiner Eigenschaften, aber a Mapverwendet keine Eigenschaften zum Speichern seiner Daten. So erhalten Sie ein leeres Objekt, wenn Sie es naiv stringifizieren.
Konvertieren Sie es stattdessen zuerst in ein Array:
console.log(JSON.stringify([...map]));
Wenn Sie JSON.stringify () auf einer Karte verwenden, erhalten Sie immer {}. Wenn das Typoskript besagt, dass Sie es richtig machen, wurde die Karte wahrscheinlich korrekt initialisiert.