Saltar al contenido

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