typescriptでのマップの初期化[重複]

Aug 17 2020

タイプスクリプトで以下のマップを初期化しようとしています。印刷すると空っぽに見えます。

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

回答

1 MauriceNino Aug 17 2020 at 14:35

正しく初期化されますが、印刷しても配列のようにすべての値が印刷されるわけではありません。ただし、キーにアクセスするだけで確認できます。キーは次のとおりです。

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"'));

関連項目:コンソールでjavascript ES6マップオブジェクトを表示するにはどうすればよいですか?

そこに述べられているように、あなたはただ地図を広げてそれを印刷することができます:

let map = new Map([
    [
        "api/service/method",
        {
            uriPath: {}
        }
    ],
    [
        "\"type\": \"html\"",
        {
            body: {}
        }
    ]
]);

console.log([...map]);

JessevanAssen Aug 17 2020 at 14:35

これJSON.stringifyは、マップを文字列化する方法がわからないため、代わりに基になるオブジェクトを文字列化しようとするため、空のオブジェクトになります。

console.log(JSON.stringify([...a.entries()]));代わりに試してください

NiettheDarkAbsol Aug 17 2020 at 14:35

オブジェクトを文字列化するには、そのプロパティを文字列化する必要Mapがありますが、はプロパティを使用してデータを保存しません。したがって、単純に文字列化すると、空のオブジェクトが得られます。

代わりに、最初に配列に変換します。

console.log(JSON.stringify([...map]));
LionelFoxcroft Aug 17 2020 at 14:39

マップでJSON.stringify()を使用すると、常に{}が得られます。typescriptで正しく実行していると表示されている場合は、マップが正しく初期化されている可能性があります。