TypeScript incluye una colección de tipos utilitarios que transforman tipos existentes de maneras muy útiles. Son herramientas que evitan repetir definiciones y hacen el código más expresivo.
Partial<T>Convierte todas las propiedades de un tipo en opcionales.
interface User {
name: string;
email: string;
age: number;
}
const updateUser = (user: User, changes: Partial<User>): User => {
return { ...user, ...changes };
};
updateUser({ name: 'Alex', email: 'alex@email.com', age: 30 }, { age: 31 });
Required<T>Lo contrario: convierte todas las propiedades en obligatorias.
interface Config {
theme?: string;
lang?: string;
}
const applyConfig = (config: Required<Config>) => {
// theme y lang son ahora obligatorios
};
Pick<T, K>Selecciona solo las propiedades que necesitas de un tipo.
type UserPreview = Pick<User, 'name' | 'email'>;
// { name: string; email: string }
const showCard = (user: UserPreview) => {
console.log(user.name, user.email);
};
Omit<T, K>Lo opuesto a Pick: elimina propiedades específicas.
type UserWithoutAge = Omit<User, 'age'>;
// { name: string; email: string }
Pick y Omit son complementarios. Usa Pick cuando quieres pocas propiedades, Omit cuando quieres casi todas excepto alguna.
Readonly<T>Hace que ninguna propiedad pueda modificarse tras la inicialización.
const config: Readonly<Config> = { theme: 'dark', lang: 'es' };
config.theme = 'light'; // ❌ Error: Cannot assign to 'theme' because it is a read-only property
Muy útil para configuraciones y constantes que no deberían mutar.
ReturnType<T>Extrae automáticamente el tipo de retorno de una función.
const getUser = () => ({ name: 'Alex', age: 30 });
type UserReturn = ReturnType<typeof getUser>;
// { name: string; age: number }
Evita duplicar la definición del tipo cuando ya lo infiere la función.
Estos seis utility types cubren la mayoría de los casos del día a día. TypeScript tiene más (Record, Exclude, Extract, NonNullable...) pero dominar estos es el punto de partida para sacarle partido real al sistema de tipos sin repetir código.
La CLI agéntica de Anthropic para programar desde la terminal: instalación, flujo básico y conceptos clave para empezar desde cero.
Tu JavaScript de siempre con una red de seguridad encima: qué resuelve TypeScript, sus beneficios reales y cómo empezar a migrar sin reescribir nada.