Saltar al contenido
webtype.orgwebtype.org

    ↑↓ 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 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 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ú.