Featured image of post Ramas en el sistema de tipos de TypeScript: Introducción a Conditional TypesFeatured image of post Ramas en el sistema de tipos de TypeScript: Introducción a Conditional Types

Ramas en el sistema de tipos de TypeScript: Introducción a Conditional Types

Create type logic that resolves output structures based on checks using Conditional Type constraints.

Introducción

Los conditional types permiten lógica a nivel de tipos: T extends U ? X : Y. Esto permite resolución de tipos dinámica y consciente del contexto.

Sintaxis básica

type IsString<T> = T extends string ? true : false; La condición pregunta: “¿Es T asignable a U?”

La palabra clave infer

Extrae un tipo desde dentro de una condición: type ReturnType<T> = T extends (...args: any[]) => infer R ? R : never;

Conditional types distributivos

Cuando se usan con uniones, se distribuyen sobre cada miembro. Para evitar distribución, envuelve ambos lados: [T] extends [any].

Patrones del mundo real

Tipos de retorno condicionales basados en entrada, sobrecarga de funciones sin overloads, DeepReadonly recursivo.

Los conditional types son el if/else del sistema de tipos. Combinados con infer, distribución y mapped types, habilitan transformaciones sofisticadas.