0Pricing
TypeScript Academy · Aula

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)); // 5

Tipando 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)); // 15

Aplicaçã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 12

Por 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 0

Excelente 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")); // foobar

As 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, Sam

Quando 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

  1. Funções Puras e Imutabilidade
  2. Curry e Aplicação Parcial
  3. Composição de Funções com Tipos
  4. Utilitários tipados pipe e flow
← Voltar para TypeScript Academy