Los tipos Omit y Pick en TypeScript son utility types que te permiten crear un nuevo tipo basado en un tipo existente, pero omitiendo o seleccionando algunas de las propiedades del tipo original.
Omit en TypeScript
Utilizamos la siguiente expresión para definir un Omit: Omit<T, K>. Con esto generamos un nuevo tipo que tiene todas las propiedades de T excepto las especificadas en K. Veamos ejemplo en código:
interfaceUser{ id: number; name: string; email: string; phoneNumber: string;}// Usando `Omit` para omitir ciertas propiedades de la interfaz Usertype UserWithoutContact=Omit<User,'email'|'phoneNumber'>;// 👈 Nuevo tipo// `UserWithoutContact` es ahora un tipo con las propiedades `id` y `name`, pero sin `email` ni `phoneNumber`.letuser:UserWithoutContact={ id:1, name:'Carlos Araujo',};console.log(user);// { id: 1, name: 'Carlos Araujo' }
En este caso, hemos usado Omit para excluir las propiedades email y phoneNumber de la interfaz User. Por lo tanto, el nuevo tipo UserWithoutContact solo tiene las propiedades id y name.
Pick en TypeScript
Empleamos la siguiente expresión para definir un Pick: Pick<T, K>. Con esto producimos un nuevo tipo que solo tiene las propiedades de T que se especifican en K. Veamos ejemplo en código:
interfaceUser{ id: number; name: string; email: string; phoneNumber: string;}// Usando `Pick` para seleccionar ciertas propiedades de Usertype UserContactInfo=Pick<User,'email'|'phoneNumber'>;// `UserContactInfo` es ahora un tipo con solo las propiedades `email` y `phoneNumber`letcontactInfo:UserContactInfo={ email:"user@email.com", phoneNumber:"653-951-802"};console.log(contactInfo);// { email: "user@email.com", phoneNumber: "653-951-802" }
En este caso, hemos empleado Pick para seleccionar las propiedades email y phoneNumber de la interfaz User. Por lo tanto, el nuevo tipo UserContactInfo solo tiene los atributos email y phoneNumber.