Elementos rest de tuplas y tipos para currificación
Utilice elementos rest de tuplas para capturar listas arbitrarias de argumentos y cree pequeños helpers de currificación con inferencia de tipos.
Elementos rest de tuplas y tipos para currificación es una lección gratuita de TypeScript Academy en CoddyKit. Esta es la lección 1 de 3. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de TypeScript Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de TypeScript Academy incluye 3 lecciones en total.
Introducción
Objetivo: Capture listas de argumentos con tuplas variádicas y escriba un pequeño pero útil ayudante curry. De este modo, sus API se mantienen flexibles y se conserva la seguridad de tipos.
Conceptos básicos de las tuplas variádicas
El patrón [...A, L]: primero aparecen los argumentos iniciales (la tupla A) y después el último argumento (L). Es la piedra angular de los ayudantes.
type HeadTail<A extends any[], L> = [...A, L]
function callWithLast<A extends any[], L, R>(fn: (...args: [...A, L]) => R, last: L, ...head: A): R {
return fn(...head, last)
}
// Example
function join3(a: string, b: number, c: boolean) { return `${a}-${b}-${c}` }
const r = callWithLast(join3, true, "x", 42) // ok → stringAyudante curry
Un curry sencillo: gracias a [...A, L], los tipos del inicio y del último argumento son correctos.
function curryLast<A extends any[], L, R>(fn: (...args: [...A, L]) => R) {
return (last: L) => (...head: A) => fn(...head, last)
}
const curried = curryLast(join3)
const out = curried(true)("x", 42) // stringcurryFromFn general
Solución general: infiera Tail/Last a partir de Parameters<F>, preservando así el número de parámetros y sus tipos.
type Fn = (...args: any[]) => any
type Tail<T extends any[]> = T extends [...infer H, any] ? H : never
type Last<T extends any[]> = T extends [...any[], infer L] ? L : never
function curryFromFn<F extends Fn>(fn: F) {
type A = Tail<Parameters<F>>
type L = Last<Parameters<F>>
return (last: L) => (...head: A) => fn(...head, last)
}
const cur = curryFromFn(join3)
const o2 = cur(true)("x", 42) // still stringComponer con tuplas
Flujo A → B → C con compose: se conservan los argumentos de la tupla A y se encadenan los tipos de salida.
function compose<A extends any[], B, C>(g: (b: B) => C, f: (...args: A) => B) {
return (...args: A): C => g(f(...args))
}
function len(a: string, b: number) { return `${a}${b}`.length }
function isEven(n: number) { return n % 2 === 0 }
const comp = compose(isEven, len)
const ok = comp("id", 99) // booleanConsejos
Consejos:
Las tuplas variádicas requieren TS 4.0 o posterior; mantenga el destino actualizado.
Ayude al compilador: a veces puede mejorar la inferencia escribiendo explícitamente los parámetros de tipo.
Una generalización excesiva añade complejidad al diseño de la API; los ayudantes sencillos son más eficaces.
Comprobación de la firma de curry
Comprobación rápida: ¿Qué firma captura cualquier argumento A y el último argumento L para un ayudante curry?
Repaso
Repaso: Modele listas de argumentos con [...A, L]; escriba pequeños ayudantes curry y compose; los tipos se conservan automáticamente.
Preguntas frecuentes
¿La lección «Elementos rest de tuplas y tipos para currificación» es gratis?
Sí — el texto completo de «Elementos rest de tuplas y tipos para currificación» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de TypeScript Academy, actualiza a CoddyKit PRO. El curso de TypeScript Academy incluye 3 lecciones en total.
¿Qué aprenderé en «Elementos rest de tuplas y tipos para currificación»?
Utilice elementos rest de tuplas para capturar listas arbitrarias de argumentos y cree pequeños helpers de currificación con inferencia de tipos. Practicas TypeScript Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar TypeScript Academy?
No se requiere experiencia previa. TypeScript Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 3.
¿Cuánto tiempo toma la lección «Elementos rest de tuplas y tipos para currificación»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de TypeScript Academy?
Sí. Cada lección de TypeScript Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Elementos rest de tuplas y tipos para currificación
- Composición segura de funciones y argumentos
- Builders con tipado fuerte