Initialisation de la carte dans un script dactylographié [duplicate]

Aug 17 2020

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

1 MauriceNino Aug 17 2020 at 14:35

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]);

JessevanAssen Aug 17 2020 at 14:35

C'est parce JSON.stringifyque 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

NiettheDarkAbsol Aug 17 2020 at 14:35

La stringification d'un objet implique la stringification de ses propriétés, mais a Mapn'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]));
LionelFoxcroft Aug 17 2020 at 14:39

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.