3 conceptos sobre tipos condicionales en @typescript
1️⃣ ¿Qué y cómo usarlos?
2️⃣ Distributividad
3️⃣ Inferencia de tipos
🧵 👇
Un tipo condicional permite seleccionar un tipo basado en una condición, como un bloque ternario en Javascript.
👉 Para crear un tipo condicional utilizarás genéricos y la palabra clave "extends".
🤯 La condición a evaluar se crea al revisar si el genérico extiendo un valor
🤓 La distribuitividad es una propiedad matemática de los tipos unión.
✅ Si el argumento pasado al valor genérico es una unión la condición se aplicará a cada parte de la unión
💡 Puedes considerar que la condición "Itera" sobre las partes de la unión
🤯 Es posible "extraer" un tipo y utilizarlo como variable dentro de un tipo condicional.
✅ La palabra clave `infer` permite crear una variable con el tipo obtenido para ser usada dentro de las rama verdadera de la condición.
👉 Es decir: Puedes obtener partes de un tipo!
Un ejemplo de esto es el siguiente tipo `Split`
1️⃣ Recibe un tipo genérico S
2️⃣ La condición es si S puede extender el patrón "Head Tail" (un espacio)
3️⃣ Usando `infer` y template literals `${}` se obtienen dos "variables"
4️⃣ Usa recursión para revisar la parte `Tail`
Puedes encontrar el código fuente de este ejemplo y editarlo si gustas directamente en el playground de typescript en el siguiente enlace
🔗 matiasfha.dev/ts-split