ExpertiDict

TypeScript · Intermediário · Inglês · Técnico

Object.keys

/ˈɑbdʒɛkt kiz/substantivo

Função cujo tipo devolve string[] e não (keyof T)[], de propósito, porque objetos podem ter propriedades extras em runtime. Daí a dificuldade de indexar o objeto com as chaves.

Onde usar

Aparece no clássico erro de indexar um objeto dentro de um for sobre Object.keys. A solução comum é uma asserção local para keyof typeof, ou iterar com Object.entries.

Em código

const o = { a: 1, b: 2 };
type K = keyof typeof o;
let soma = 0;
for (const k of Object.keys(o)) {
  // soma += o[k]; // erro: k é string
  soma += o[k as K];
}

Exemplos

Object.keys returns string[], so you need a cast to index.

Object.keys retorna string[], então você precisa de um cast para indexar.

Use Object.entries and skip the Object.keys cast.

Use Object.entries e pule o cast do Object.keys.

Cuidado

Evite a asserção quando o objeto vem de fora: um objeto com chaves extras quebra a suposição, e o tipo passa a mentir.

Veja também

Todos os termos de TypeScript