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; }readonlyse traslada, porquePickmapea sobre un conjunto de claves derivado deT.
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.

