Operadores
keyof
La unión de las claves de un tipo.
Qué es
Uno de los dos operadores con los que se construye toda transformación de objetos — `keyof` saca las claves, el acceso indexado lee los valores. El resultado es una unión de tipos literales sin orden particular, y deliberadamente no hay forma de pedir «la primera clave»: el orden no es algo que un tipo de objeto garantice.
Ejemplos
keyof User→keyof Userkeyof { a: 1 }→"a"keyof string[]
→keyof string[]Un array tiene como claves todos los métodos de array, más `number`. Rara vez es lo que querías — `T[number]` sí lo es.
Cada tipo resuelto de arriba lo imprimió TypeScript 5.9.3, no se escribió a mano.
Lo que no hace
- No te da una lista ordenada. El orden de las claves no forma parte del tipo, así que nada puede depender de él.
- No omite miembros heredados ni integrados. `keyof` de un array o de una instancia de clase incluye todo lo que el tipo declara, métodos incluidos.
Conclusión
Usa `keyof T` cuando quieras los nombres y `T[keyof T]` cuando quieras los valores. Casi todo tipo mapeado empieza por uno de esos dos.