Construcciones
Mapped types
Un bucle sobre una unión de claves que construye un tipo de objeto.
Qué es
Lee { [K in Keys]: Value } como: para cada K de este conjunto de claves, produce una propiedad llamada K cuyo tipo es esa expresión. Dos decisiones independientes por clave — cómo se llama, mediante la cláusula opcional as, y qué contiene. Partial, Required, Readonly, Pick y Record son una línea de esto cada uno.
Ejemplos
Stringify<User>→{ id: string; name: string; }Prefixed<User>→{ getId: number; getName: string; }La cláusula
asrenombra la clave. Así un tipo mapeado produce nombres que no estaban en la entrada.Filtered<User>→{ name: string; }Renombrar una clave a
neverla elimina. Es la única forma en que un tipo mapeado puede descartar una propiedad.
Cada tipo resuelto de arriba lo imprimió TypeScript 6.0.3, no se escribió a mano.
Lo que no hace
- No puede eliminar una clave desde el lado del valor. Producir
nevercomo *tipo* de propiedad deja la clave presente e imposible de rellenar, que no es lo mismo que ausente. - Deja de conservar los modificadores en cuanto el conjunto de claves se calcula.
[K in keyof T]es homomórfico y mantienereadonlyy?; añade una cláusulaaso une las claves y se pierden salvo que los vuelvas a poner.
Conclusión
Las claves se deciden en la cláusula de clave y los valores en la de valor. La mayoría de los errores en tipos mapeados son una de esas respuestas usada por accidente en lugar de la otra.

