Saltar al contenido
webtype.orgwebtype.org

    ↑↓ mover · ⏎ abrir · esc cerrar

    Formas de objeto

    Pick

    Conserva solo las claves nombradas, y comprueba que existan.

    Qué es

    Un tipo mapeado sobre K y no sobre keyof T, por eso el resultado es un objeto llano y no una copia del original. La restricción K extends keyof T hace trabajo real: elige una clave que no existe y el error llega en el tipo, no después en un acceso a propiedad.

    Ejemplos

    • Pick<{ a: string; b: number }, 'a'>
      →{ a: string; }
    • Pick<{ a: string; b: number; c: boolean }, 'a' | 'c'>
      →{ a: string; c: boolean; }
    • Pick<{ readonly a: string }, 'a'>
      →{ readonly a: string; }

      readonly se traslada, porque Pick mapea sobre un conjunto de claves derivado de T.

    Cada tipo resuelto de arriba lo imprimió TypeScript 6.0.3, no se escribió a mano.

    Lo que no hace

    • No acepta claves que no existen. Es una virtud, y es la diferencia con Omit — este último acepta cualquier cosa.
    • No distribuye sobre una unión en T. Pick<A | B, K> elige de la unión como un todo, no de cada miembro.

    Conclusión

    Cuando quieres un subconjunto y quieres que te avisen de las erratas, Pick es el que tiene la barandilla.