Formas de objeto
Partial
Hace opcional cada propiedad de un objeto, un nivel de profundidad.
Qué es
Un tipo mapeado homomórfico que añade ? a cada clave. Como el mapeo recorre keyof T para un parámetro de tipo desnudo, conserva todo lo demás que encuentra — readonly sobrevive y un array sigue siendo un array. Es la primera utilidad que casi todos conocen y la que más se usa cuando se quería algo más profundo.
Ejemplos
Partial<{ a: string; b: number }>→{ a?: string | undefined; b?: number | undefined; }Partial<{ readonly a: string }>→{ readonly a?: string | undefined; }readonlysobrevive, porque el mapeo es homomórfico.Partial<{ a: { b: string } }>→{ a?: { b: string; } | undefined; }Y
bqueda intacto. Un nivel, siempre.
Cada tipo resuelto de arriba lo imprimió TypeScript 6.0.3, no se escribió a mano.
Lo que no hace
- No es profundo. Los objetos anidados mantienen todas sus propiedades obligatorias, la sorpresa más común de esta lista.
- Opcional no es lo mismo que «puede ser undefined». Con
exactOptionalPropertyTypesson tipos distintos, yPartialproduce el primero.
Conclusión
Usa Partial sobre la forma que realmente asignas, no sobre todo el árbol. Si quieres el árbol, la recursión tienes que escribirla tú.

