Doce conceptos
La subida desde los tipos mapeados hasta los condicionales recursivos. Recórrela y el puzle del viernes dejará de dar miedo.
- 01
Alias de tipos
Un nombre para un tipo. Todo lo demás es un alias que recibe argumentos.
- 02
Parámetros genéricos
Los alias reciben argumentos. `extends` aquí es una restricción, no herencia.
- 03
keyof y acceso indexado
`keyof T` es la unión de las claves de T; `T[K]` lee el tipo de una propiedad.
- 04
Tipos mapeados
Construye un objeto iterando una unión de claves: `{ [K in Keys]: Value }`.
Se practica en#212 Reconstruye Pick#219 Reconstruye Partial
- 05
Modificadores
Añade o quita `readonly` y `?` al mapear, con `+` y `-`.
- 06
Tipos condicionales
`A extends B ? X : Y` — el `if` a nivel de tipos, sobre asignabilidad.
- 07
infer
Vincula una variable de tipo dentro de un patrón y úsala en la rama verdadera.
Se practica en#213 Desenvuelve
- 08
Distributividad
Un parámetro desnudo en un condicional se distribuye sobre uniones. `[T]` lo detiene.
- 09
Tipos de literal de plantilla
Patrones de cadena a nivel de tipos. Con `infer`, analizan texto.
Se practica en#214 Parámetros de ruta#217 Divide
- 10
Recursión
Un tipo condicional que se llama a sí mismo. La rama falsa es la salida.
Se practica en#215 Solo lectura profundo
- 11
Tuplas variádicas
Expande tuplas dentro de tuplas. `length` las convierte en un contador.
Se practica en#216 Suma a nivel de tipos#218 Último
- 12
Igualdad exacta
Por qué `Equal<X, Y>` no es `extends`, y por qué una intersección no la pasa.