Formas de objeto
Required
Elimina ? de cada propiedad, un nivel de profundidad.
Qué es
El espejo de Partial, escrito con -?. El signo menos es todo el mecanismo: los modificadores de un tipo mapeado se añaden con +? y se quitan con -?, y Required es la biblioteca estándar usando el segundo. También quita undefined del tipo de la propiedad, un efecto aparte que casi nadie espera.
Ejemplos
Required<{ a?: string; b?: number }>→{ a: string; b: number; }Required<{ a?: string | undefined }>→{ a: string; }undefinedtambién se va —-?lo quita del tipo, no solo el?de la clave.Required<{ a: string }>→{ a: string; }
Cada tipo resuelto de arriba lo imprimió TypeScript 6.0.3, no se escribió a mano.
Lo que no hace
- No hace que una propiedad deje de ser nula.
Required<{ a?: string | null }>sigue conteniendonull— solo se eliminaundefined. - Tampoco es profundo. La simetría con
Partialllega hasta la limitación.
Conclusión
-? hace dos cosas a la vez: quita la opcionalidad y quita undefined. Casi toda la confusión con Required es la segunda, que llega sin avisar.

