ExpertiDict

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

keyof

/ˈkiʌv/palavra-chave

Operador que recebe um tipo de objeto e produz a união literal das suas chaves, como 'id' | 'nome'. Base para funções e tipos que acessam propriedades com segurança.

Onde usar

Aparece em getters genéricos como pegar(obj, chave), em que a chave só pode ser uma propriedade existente e o retorno acompanha o tipo daquela propriedade.

Em código

interface P { id: number; nome: string }
type Chave = keyof P; // 'id' | 'nome'
function pegar<T, K extends keyof T>(
  o: T, k: K
) {
  return o[k]; // T[K]
}
const n = pegar({ nome: 'Ana' }, 'nome');

Exemplos

Use keyof so the key must exist on the object.

Use keyof para que a chave precise existir no objeto.

The key type is keyof User, so typos fail to compile.

O tipo da chave é keyof User, então erros de digitação não compilam.

Cuidado

Em um tipo com assinatura de índice string, keyof devolve string | number, porque chaves numéricas viram strings em JavaScript.

Veja também

Todos os termos de TypeScript