我正在尝试在打字稿中的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
答案 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()时,它将始终为您提供{}。如果打字稿说您做对了,则地图可能已正确初始化。