打字稿中的地图初始化

时间:2020-08-17 07:31:16

标签: javascript typescript

我正在尝试在打字稿中的Map下面进行初始化。当我打印它时,它似乎是空的。

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

4 个答案:

答案 0 :(得分:1)

它已正确初始化,但是打印并不能像数组一样打印所有值。但是您可以通过访问密钥来检查它-它们存在:

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

也相关:How can I display a javascript ES6 map object in console?

如前所述,您可以展开地图并打印:

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

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

答案 1 :(得分:0)

这是因为JSON.stringify不知道如何对Map进行字符串化,因此它将尝试对基础对象进行字符串化,从而导致空对象。

改为尝试console.log(JSON.stringify([...a.entries()]));

答案 2 :(得分:0)

对对象进行字符串化涉及对其属性进行字符串化,但是Map不使用属性来保存其数据。因此,如果您天真地将其字符串化,则会得到一个空对象。

首先将其转换为数组:

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

答案 3 :(得分:0)

在地图上使用JSON.stringify()时,它将始终为您提供{}。如果打字稿说您做对了,则地图可能已正确初始化。

相关问题