Saltar al contenido

    ↑↓ mover · ⏎ abrir · esc cerrar

    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; }

      `readonly` sobrevive, porque el mapeo es homomórfico.

    • Partial<{ a: { b: string } }>
      { a?: { b: string; } | undefined; }

      Y `b` queda intacto. Un nivel, siempre.

    Cada tipo resuelto de arriba lo imprimió TypeScript 5.9.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 `exactOptionalPropertyTypes` son tipos distintos, y `Partial` produce 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ú.