Curry e Aplicação Parcial
Transforme funções com vários argumentos em formas com curry.
Curry e Aplicação Parcial é uma aula grátis de TypeScript Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de TypeScript Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de TypeScript Academy inclui 4 aulas no total.
O que é currificação?
Currificação transforma uma função com vários argumentos em uma cadeia de funções de um único argumento. Em vez de f(a, b), chama-se f(a)(b).
O exemplo clássico
Aqui, add recebe um número e devolve uma função que aguarda o próximo. O TypeScript infere automaticamente os tipos das funções aninhadas.
const add = (a: number) => (b: number) => a + b;
console.log(add(2)(3)); // 5Tipando uma função currificada
O tipo explícito mostra a cadeia com clareza: uma função que devolve outra função. Cada seta corresponde a um argumento.
type Add = (a: number) => (b: number) => number;
const add: Add = a => b => a + b;
console.log(add(10)(5)); // 15Aplicação parcial
Aplicação parcial fixa alguns argumentos agora e fornece os demais posteriormente. Com uma função currificada, isso consiste simplesmente em chamá-la com menos etapas.
const add = (a: number) => (b: number) => a + b;
const add10 = add(10); // partially applied
console.log(add10(1), add10(2)); // 11 12Por que a aplicação parcial ajuda
É possível criar funções especializadas a partir de funções gerais. add10 é uma ferramenta reutilizável e nomeada, derivada de add, o que melhora a legibilidade e a reutilização.
Currificação de três argumentos
O padrão se estende a qualquer aridade. Cada nível captura um argumento em uma clausura até que o valor final seja produzido.
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 0Excelente para map e filtragem
Funções currificadas se encaixam perfeitamente em métodos de vetores porque map espera uma função de um argumento. A aplicação parcial produz exatamente isso.
const mul = (a: number) => (b: number) => a * b;
const triple = mul(3);
console.log([1, 2, 3].map(triple)); // [3, 6, 9]Um auxiliar genérico de currificação
É possível escrever um auxiliar tipado que faz a currificação de uma função com dois argumentos. Os tipos genéricos mantêm precisos os tipos dos parâmetros e do 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")); // foobarAs clausuras capturam argumentos
A currificação funciona porque cada função devolvida captura os argumentos anteriores. Esses valores permanecem disponíveis até que a chamada final os utilize.
const greet = (greeting: string) => (name: string) =>
greeting + ", " + name;
const hi = greet("Hi");
console.log(hi("Sam")); // Hi, SamQuando não usar currificação
Currificar todas as funções pode prejudicar a legibilidade. Recorra a isso quando a aplicação parcial for realmente útil, por exemplo, ao configurar auxiliares reutilizáveis ou compor fluxos.
Currificação versus argumentos padrão
Parâmetros padrão fornecem valores padrão, mas não aplicação em etapas. A currificação oferece aplicação parcial de verdade, devolvendo uma função real que pode ser passada adiante e reutilizada.
Verificação rápida
Verificação rápida sobre esta lição.
Recapitulação
Currificação transforma f(a, b) em f(a)(b), uma cadeia de funções de um argumento tipadas como setas aninhadas. A aplicação parcial então fixa os argumentos iniciais para criar funções especializadas reutilizáveis, usando fechamentos.
Perguntas Frequentes
A aula “Curry e Aplicação Parcial” é grátis?
Sim — o texto completo de “Curry e Aplicação Parcial” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de TypeScript Academy, atualize para CoddyKit PRO. O curso de TypeScript Academy inclui 4 aulas no total.
O que vou aprender em “Curry e Aplicação Parcial”?
Transforme funções com vários argumentos em formas com curry. Você pratica TypeScript Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar TypeScript Academy?
Nenhuma experiência prévia é necessária. TypeScript Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Curry e Aplicação Parcial”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de TypeScript Academy?
Sim. Cada aula de TypeScript Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Funções Puras e Imutabilidade
- Curry e Aplicação Parcial
- Composição de Funções com Tipos
- Utilitários tipados pipe e flow