Inicialização do mapa em typescript [duplicado]
Estou tentando inicializar abaixo de Map no texto datilografado. Quando imprimo, parece que está vazio.
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
Respostas
Ele é inicializado corretamente, mas imprimi-lo não imprime todos os valores como uma matriz. Mas você pode verificar acessando apenas as chaves - elas existem:
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"'));
Também relevante: Como posso exibir um objeto de mapa javascript ES6 no console?
Conforme declarado lá, você pode simplesmente espalhar o mapa e imprimir:
let map = new Map([
[
"api/service/method",
{
uriPath: {}
}
],
[
"\"type\": \"html\"",
{
body: {}
}
]
]);
console.log([...map]);
Isso porque JSON.stringifynão sabe como stringificar um Mapa, então ele tentará stringificar o objeto subjacente, o que resulta em um objeto vazio.
Tente ao console.log(JSON.stringify([...a.entries()]));invés
A stringificação de um objeto envolve a stringificação de suas propriedades, mas a Mapnão usa propriedades para salvar seus dados. Assim, você obtém um objeto vazio se ingenuamente restringi-lo.
Em vez disso, converta-o em uma matriz primeiro:
console.log(JSON.stringify([...map]));
Quando você usa JSON.stringify () em um mapa, ele sempre fornecerá {}. Se o texto digitado disser que você está fazendo certo, o mapa provavelmente foi inicializado corretamente.