0Pricing
TypeScript Academy · Lección

Currificación y aplicación parcial

Transforme funciones con varios argumentos en formas currificadas.

Currificación y aplicación parcial es una lección gratuita de TypeScript Academy en CoddyKit. Esta es la lección 2 de 4. 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 4 lecciones en total.

¿Qué es el currificado?

El currificado transforma una función con varios argumentos en una cadena de funciones con un solo argumento. En lugar de f(a, b), se llama a f(a)(b).

El ejemplo clásico

Aquí, add recibe un número y devuelve una función que espera el siguiente. TypeScript infiere automáticamente los tipos de las funciones anidadas.

const add = (a: number) => (b: number) => a + b;
console.log(add(2)(3)); // 5

Tipado de una función currificada

El tipo explícito muestra claramente la cadena: una función que devuelve otra función. Cada flecha corresponde a un argumento.

type Add = (a: number) => (b: number) => number;
const add: Add = a => b => a + b;
console.log(add(10)(5)); // 15

Aplicación parcial

La aplicación parcial fija algunos argumentos ahora y proporciona el resto más adelante. Con una función currificada, basta con llamarla dando menos pasos.

const add = (a: number) => (b: number) => a + b;
const add10 = add(10); // partially applied
console.log(add10(1), add10(2)); // 11 12

Por qué es útil la aplicación parcial

Puede crear funciones especializadas a partir de funciones generales. add10 es una herramienta reutilizable y con nombre, derivada de la función genérica add, que mejora la legibilidad y la reutilización.

Currificado de tres argumentos

El patrón se amplía a cualquier aridad. Cada nivel captura un argumento en una clausura hasta que se produce el valor final.

const clamp = (min: number) => (max: number) => (x: number) =>
  Math.min(Math.max(x, min), max);
const toByte = clamp(0)(255);
console.log(toByte(300), toByte(-5)); // 255 0

Ideal para map y filter

Las funciones currificadas encajan perfectamente en los métodos de matrices porque map espera una función con un argumento. La aplicación parcial produce exactamente ese tipo de función.

const mul = (a: number) => (b: number) => a * b;
const triple = mul(3);
console.log([1, 2, 3].map(triple)); // [3, 6, 9]

Un helper genérico para currificar

Puede escribir un helper tipado que currifique una función de dos argumentos. Los genéricos mantienen la precisión de los tipos de los parámetros y del valor de retorno.

function curry2<A, B, R>(f: (a: A, b: B) => R) {
  return (a: A) => (b: B) => f(a, b);
}
const join = curry2((a: string, b: string) => a + b);
console.log(join("foo")("bar")); // foobar

Las clausuras capturan los argumentos

El currificado funciona porque cada función devuelta forma una clausura sobre los argumentos anteriores. Esos valores permanecen disponibles hasta que la llamada final los utiliza.

const greet = (greeting: string) => (name: string) =>
  greeting + ", " + name;
const hi = greet("Hi");
console.log(hi("Sam")); // Hi, Sam

Cuándo no currificar

Currificar todas las funciones puede perjudicar la legibilidad. Recurra al currificado cuando la aplicación parcial sea realmente útil, por ejemplo, al configurar helpers reutilizables o componer pipelines.

Currificado frente a argumentos predeterminados

Los parámetros predeterminados proporcionan valores por defecto, pero no una aplicación por etapas. El currificado ofrece una aplicación parcial auténtica y devuelve una función real que puede pasar a otras partes del código y reutilizar.

Comprobación rápida

Comprobación rápida de esta lección.

Resumen

La currificación transforma f(a, b) en f(a)(b), una cadena de funciones de un argumento con tipos expresados como flechas anidadas. La aplicación parcial fija después los argumentos iniciales para crear funciones especializadas reutilizables mediante clausuras.

Preguntas frecuentes

¿La lección «Currificación y aplicación parcial» es gratis?

Sí — el texto completo de «Currificación y aplicación parcial» 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 4 lecciones en total.

¿Qué aprenderé en «Currificación y aplicación parcial»?

Transforme funciones con varios argumentos en formas currificadas. 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 2 de 4.

¿Cuánto tiempo toma la lección «Currificación y aplicación parcial»?

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

  1. Funciones puras e inmutabilidad
  2. Currificación y aplicación parcial
  3. Composición de funciones con tipos
  4. Utilidades pipe y flow tipadas
← Volver a TypeScript Academy