Más allá de los mapped types, TypeScript ofrece patrones avanzados como tipos condicionales distributivos, tipos recursivos y operaciones sobre uniones y e intersecciones.
Tipos condicionales distributivos
Cuando un tipo condicional recibe un tipo unión, la condición se aplica a cada miembro individualmente: T extends U ? X : Y con T = A | B produce (A extends U ? X : Y) | (B extends U ? X : Y).
never filtering
type FilterNullish<T> = T extends null | undefined ? never : T;
// FilterNullish<string | null | undefined> = string
Tipos recursivos
type DeepReadonly<T> = {
readonly [P in keyof T]: T[P] extends object ? DeepReadonly<T[P]> : T[P];
};
Inferencia condicional
infer en tipos condicionales permite extraer subtipos: T extends Array<infer U> ? U : never. Usado extensamente en React types.

