Featured image of post Tipos no mapeados y utilidades avanzadas de TypeScriptFeatured image of post Tipos no mapeados y utilidades avanzadas de TypeScript

Tipos no mapeados y utilidades avanzadas de TypeScript

Use the NoInfer utility type to prevent unexpected widening during complex type inferences.

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.