Resumen

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:

interface User {
  id: number;
  name: string;
  email: string;
  phoneNumber: string;
}

// Usando `Omit` para omitir ciertas propiedades de la interfaz User
type UserWithoutContact = Omit<User, 'email' | 'phoneNumber'>; // 👈 Nuevo tipo

// `UserWithoutContact` es ahora un tipo con las propiedades `id` y `name`, pero sin `email` ni `phoneNumber`.

let user: 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:

interface User {
  id: number;
  name: string;
  email: string;
  phoneNumber: string;
}

// Usando `Pick` para seleccionar ciertas propiedades de User
type UserContactInfo = Pick<User, 'email' | 'phoneNumber'>;

// `UserContactInfo` es ahora un tipo con solo las propiedades `email` y `phoneNumber`

let contactInfo: 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.

Contribución creada por: Martín Álvarez (Platzi Contributor).