Initialisation de la carte dans un script dactylographié [duplicate]
J'essaye d'initialiser ci-dessous la carte en tapuscrit. Lorsque je l'imprime, il semble vide.
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
Réponses
Il est correctement initialisé, mais son impression n'imprime pas toutes les valeurs comme un tableau. Mais vous pouvez le vérifier en accédant simplement aux clés - elles existent:
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"'));
Aussi pertinent: Comment puis-je afficher un objet de carte javascript ES6 dans la console?
Comme indiqué ici, vous pouvez simplement diffuser la carte et imprimer cela:
let map = new Map([
[
"api/service/method",
{
uriPath: {}
}
],
[
"\"type\": \"html\"",
{
body: {}
}
]
]);
console.log([...map]);
C'est parce JSON.stringify
que ne sait pas comment stringifier une carte, il essaiera donc de stringifier l'objet sous-jacent à la place, ce qui aboutira à un objet vide.
Essayez console.log(JSON.stringify([...a.entries()]));
plutôt
La stringification d'un objet implique la stringification de ses propriétés, mais a Map
n'utilise pas de propriétés pour enregistrer ses données. Ainsi, vous obtenez un objet vide si vous le stringifiez naïvement.
Au lieu de cela, convertissez-le d'abord en tableau:
console.log(JSON.stringify([...map]));
Lorsque vous utilisez JSON.stringify () sur une carte, il vous donnera toujours {}. Si dactylographié indique que vous faites les choses correctement, la carte a probablement été initialisée correctement.