0Pricing
TypeScript Academy · Lezione

Comporre funzioni e argomenti in sicurezza

Componga funzioni preservando tuple degli argomenti e tipi restituiti; scriva helper pipe/compose che restino type-safe.

Comporre funzioni e argomenti in sicurezza è una lezione TypeScript Academy gratuita su CoddyKit. Questa è la lezione 2 di 3. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento TypeScript Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso TypeScript Academy include 3 lezioni in totale.

Introduzione

Obiettivo: comporre funzioni senza perdere informazioni sugli argomenti. Le tuple variadiche consentono di mantenere l'intera tupla degli argomenti negli helper pipe/compose.

  • Preservare arità e nomi
  • Mantenere l'inferenza tra i passaggi
  • Niente any, niente cast

Compose di base

compose: la prima funzione accetta tutti gli argomenti (...args: A), la seconda consuma il risultato; arità e tipi vengono preservati.

function compose<A extends any[], B, C>(g: (b: B) => C, f: (...args: A) => B) {
  return (...args: A): C => g(f(...args))
}

function toLen(a: string, n: number) { return `${a}${n}`.length }
function isEven(x: number) { return x % 2 === 0 }

const c1 = compose(isEven, toLen)
const ok = c1("id", 99)   // boolean

Helper pipe

pipe implementa la stessa idea in ordine inverso; il flusso dell'inferenza è più intuitivo.

function pipe<A extends any[], B, C>(f: (...args: A) => B, g: (b: B) => C) {
  return (...args: A): C => g(f(...args))
}

const p1 = pipe(toLen, isEven)
const ok2 = p1("xx", 7) // boolean

Compose con 3 o più funzioni

Con 3 o più funzioni si ripete lo stesso schema; la tupla A viene preservata e i valori restituiti intermedi vengono concatenati.

function compose3<A extends any[], B, C, D>(h: (c: C) => D, g: (b: B) => C, f: (...args: A) => B) {
  return (...args: A): D => h(g(f(...args)))
}

function toUpper(s: string) { return s.toUpperCase() }

const c3 = compose3(toUpper, (x: number) => x.toString(), toLen)
const val = c3("a", 5) // "2" → then upper → "2"

Associare la testa

bindHead: antepone gli argomenti completi e genera una funzione senza argomenti; solo a scopo dimostrativo (in realtà può essere resa più flessibile con Parameters).

function bindHead<A extends any[], B>(fn: (...args: A) => B, ...head: A) {
  return (...rest: []): B => fn(...head)
}

const bh = bindHead(toLen, "x", 42)
const r = bh() // number

Suggerimenti

Suggerimenti:

Eviti any negli helper; interrompe la catena dell'inferenza.

Se necessario, renda esplicito il tipo restituito; ciò migliora l'esperienza di sviluppo.

Per le composizioni in più fasi, scelga helper piccoli invece di helper eccessivamente generici.

Verifica della firma compose

Verifica rapida: quale firma compose preserva la tupla degli argomenti della funzione di origine?

Riepilogo

Riepilogo: ha scritto compose/pipe preservando gli argomenti con le tuple variadiche; la composizione è definita senza perdere arità e tipi.

Domande Frequenti

La lezione «Comporre funzioni e argomenti in sicurezza» è gratuita?

Sì — il testo completo di «Comporre funzioni e argomenti in sicurezza» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso TypeScript Academy, passa a CoddyKit PRO. Il corso TypeScript Academy include 3 lezioni in totale.

Cosa imparerò in «Comporre funzioni e argomenti in sicurezza»?

Componga funzioni preservando tuple degli argomenti e tipi restituiti; scriva helper pipe/compose che restino type-safe. Eserciti TypeScript Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare TypeScript Academy?

Non è richiesta alcuna esperienza precedente. TypeScript Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 3.

Quanto tempo richiede la lezione «Comporre funzioni e argomenti in sicurezza»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione TypeScript Academy?

Sì. Ogni lezione TypeScript Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Elementi rest nelle tuple e tipi per il curry
  2. Comporre funzioni e argomenti in sicurezza
  3. Builder fortemente tipizzati
← Torna a TypeScript Academy