Los genéricos permiten código reutilizable type-safe. La palabra clave extends restringe parámetros de tipo a formas con propiedades específicas.
La restricción extends
function getProperty<T, K extends keyof T>(obj: T, key: K): T[K] garantiza que key sea una propiedad válida de obj.
Conditional Types
Usan extends para verificar relaciones de tipo: type IsString<T> = T extends string ? true : false;
Mapped Types con keyof
Transforman cada propiedad de un tipo existente. Partial<T>, Required<T>, Readonly<T>, Pick<T, K>. Desde TS 4.1, remapeo de claves con template literal types.
La palabra clave infer
ReturnType<T>, Parameters<T> y patrones de fábrica con restricciones genéricas. Construcción de un cliente API type-safe.
Dominar extends, conditional types, mapped types e infer transforma TypeScript en un potente lenguaje de programación de tipos.

