javascript - Não é possível forçar as chaves do objeto a serem inteiros
const obj = {
15: 100
};
for(let key in obj)
console.log(key, typeof(key), typeof(+key))
O resultado é 15 string number. Estou tentando iterar sobre os valores do objeto e colocar alguns deles em um objeto Map, mas a compatibilidade de tipos parece impossível de alcançar. Estou fazendo algo errado aqui ou as chaves do objeto são sempre strings?
Object.keys(obj)
também retorna ["15"]
Resposta #1
As chaves de objetos são sempre strings. Você pode ver mais sobre isso aqui:
Os nomes das propriedades devem ser strings. Isso significa que objetos que não são strings não podem ser usados como chaves no objeto. Qualquer objeto que não seja uma string, incluindo um número, é convertido em string por meio do método toString.
Para você ser capaz de alcançar o que deseja, você precisará converter as chaves de volta para inteiros.