Elementi rest nelle tuple e tipi per il curry
Utilizzi elementi rest nelle tuple per acquisire liste di argomenti arbitrarie e crei piccoli helper per il curry con inferenza dei tipi.
Elementi rest nelle tuple e tipi per il curry è una lezione TypeScript Academy gratuita su CoddyKit. Questa è la lezione 1 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: catturare liste di argomenti con le tuple variadiche e scrivere un piccolo ma utile helper curry. In questo modo le API restano flessibili e la sicurezza dei tipi è preservata.
Basi delle tuple variadiche
Il modello [...A, L]: prima gli argomenti iniziali (la tupla A), poi l'ultimo argomento (L). È il fondamento degli helper.
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 → stringHelper curry
Un semplice curry: grazie a [...A, L], sia i tipi iniziali sia quello dell'ultimo argomento sono corretti.
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 generico
Soluzione generale: deduca Tail/Last da Parameters<F>, preservando così il numero e i tipi dei parametri.
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 stringComporre con le tuple
Flusso A → B → C con compose: gli argomenti della tupla A vengono preservati e i tipi restituiti vengono concatenati.
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) // booleanSuggerimenti
Suggerimenti:
Le tuple variadiche richiedono TS 4.0 o versioni successive; mantenga aggiornato il target.
Dia un suggerimento al compilatore: a volte può migliorare l'inferenza scrivendo esplicitamente i parametri di tipo.
Un'eccessiva ricerca di generalità aggiunge complessità alla progettazione delle API; gli helper semplici sono i più efficaci.
Verifica della firma curry
Verifica rapida: quale firma cattura qualsiasi argomento A e l'ultimo argomento L per un helper curry?
Riepilogo
Riepilogo: modelli le liste di argomenti con [...A, L]; scrivi piccoli helper curry e compose; i tipi vengono preservati automaticamente.
Domande Frequenti
La lezione «Elementi rest nelle tuple e tipi per il curry» è gratuita?
Sì — il testo completo di «Elementi rest nelle tuple e tipi per il curry» è 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 «Elementi rest nelle tuple e tipi per il curry»?
Utilizzi elementi rest nelle tuple per acquisire liste di argomenti arbitrarie e crei piccoli helper per il curry con inferenza dei tipi. 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 1 di 3.
Quanto tempo richiede la lezione «Elementi rest nelle tuple e tipi per il curry»?
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
- Elementi rest nelle tuple e tipi per il curry
- Comporre funzioni e argomenti in sicurezza
- Builder fortemente tipizzati