TypeScript · Intermediário · Inglês · Técnico
keyof
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.