Cuando trabajas con objetos en TypeScript, mantener tus interfaces DRY puede ser un reto, especialmente si tienes propiedades repetidas.

El truco

Con Partial, Required, y Pick, tus interfaces pueden ser más limpias y flexibles.

Antes (mal):

interface Usuario {
  nombre: string;
  edad: number;
  email: string;
}

interface UsuarioParcial {
  nombre?: string;
  edad?: number;
  email?: string;
}

Después (bien):

interface Usuario {
  nombre: string;
  edad: number;
  email: string;
}

type UsuarioParcial = Partial<Usuario>;

Explicación: Aquí, Partial toma una interfaz existente y convierte todas sus propiedades en opcionales. Ahorras tiempo y escritura de código repetitivo. Puedes usar Required para lo contrario, asegurando que todas las propiedades son obligatorias, o Pick para seleccionar solo ciertas propiedades.

Con Utility Types, tu código es más limpio y fácil de mantener.