0Pricing
TypeScript Academy · Lezione

Parametri rest nelle funzioni

Definisca il tipo di funzioni che accettano un numero qualsiasi di argomenti.

Parametri rest nelle funzioni è una lezione TypeScript Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. 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 4 lezioni in totale.

Funzioni con molti argomenti

I parametri rest consentono a una funzione di accettare un numero qualsiasi di argomenti, raccolti in un unico array. TypeScript tipizza quell'array, garantendo la sicurezza anche con chiamate di lunghezza variabile.

Parametro rest di base

Anteponi ... all'ultimo parametro e assegnagli un tipo array. All'interno della funzione si comporta come un array normale.

function sum(...nums: number[]): number {
  return nums.reduce((a, b) => a + b, 0)
}
console.log(sum(1, 2, 3, 4)) // 10

Chiamare con zero argomenti

Un parametro rest può corrispondere a zero argomenti: l'array è semplicemente vuoto. Non è necessaria una gestione speciale per il caso senza argomenti.

function sum(...nums: number[]): number {
  return nums.reduce((a, b) => a + b, 0)
}
console.log(sum()) // 0

Rest dopo parametri fissi

Un parametro rest può seguire parametri fissi, ma deve essere l'ultimo. I parametri fissi vengono associati per primi; tutto ciò che rimane confluisce nell'array rest.

function join(separator: string, ...parts: string[]): string {
  return parts.join(separator)
}
console.log(join("-", "a", "b", "c")) // a-b-c

Un solo rest, sempre per ultimo

È possibile avere al massimo un parametro rest e dopo di esso non può esserci alcun parametro. Inserire un parametro dopo il rest causa un errore di sintassi.

// function bad(...nums: number[], last: number) {} // Error
function ok(first: number, ...rest: number[]) {
  return first + rest.length
}
console.log(ok(10, 1, 2)) // 12

Vincoli sul tipo degli elementi

Il tipo degli elementi dell'array rest vincola ogni argomento. Passare un tipo errato viene rilevato in fase di compilazione.

function tags(...labels: string[]): string {
  return labels.join(",")
}
console.log(tags("a", "b"))
// tags("a", 5) // Error: 5 is not a string

Rest con un tipo unione

Il tipo degli elementi può essere un'unione, consentendo argomenti di tipo misto. All'interno, restringa il tipo di ogni elemento prima di utilizzarlo.

function show(...items: (string | number)[]): string {
  return items.map(String).join(" ")
}
console.log(show("x", 1, "y", 2)) // x 1 y 2

Rest con tipi tupla

Un parametro rest può essere tipizzato come una tupla per descrivere una struttura con elementi fissi seguiti da un numero variabile di elementi. Qui il primo argomento è una stringa, seguita da un numero qualsiasi di valori numerici.

function record(...args: [string, ...number[]]): string {
  const [label, ...values] = args
  return label + ": " + values.join(",")
}
console.log(record("scores", 9, 8, 7))

Il rest tupla impone l'arità

Con un tipo rest tupla, gli elementi iniziali sono obbligatori. Omettere il primo argomento obbligatorio causa un errore di compilazione, offrendo un controllo più forte rispetto a un array normale.

function record(...args: [string, ...number[]]): number {
  return args.length
}
console.log(record("x")) // 1
// record() // Error: missing string argument

Espandere valori in una chiamata rest

Può passare un array esistente a un parametro rest utilizzando lo spread nel punto della chiamata. Il tipo degli elementi dell'array deve corrispondere a quello del parametro.

function sum(...nums: number[]): number {
  return nums.reduce((a, b) => a + b, 0)
}
const values = [1, 2, 3]
console.log(sum(...values)) // 6

Il rest nella pratica

I parametri rest sono alla base di funzioni di supporto per la registrazione, formattatori e utilità matematiche: tutto ciò che gestisce un numero variabile di input con un tipo comune o strutturato.

function max(first: number, ...rest: number[]): number {
  return rest.reduce((m, n) => (n > m ? n : m), first)
}
console.log(max(3, 7, 2, 9, 1)) // 9

Verifica rapida

Verifichi la sua comprensione dei parametri rest tipizzati.

Riepilogo

I parametri rest utilizzano ... sull'ultimo parametro per raccogliere gli argomenti aggiuntivi in un array tipizzato. Devono essere per ultimi e può essercene uno solo. Li tipizzi come un semplice array, un array di unione o una tupla per esprimere strutture con elementi fissi seguiti da elementi variabili e imporre l'arità. Espanda un array esistente nel punto della chiamata per passarlo a un parametro rest.

Domande Frequenti

La lezione «Parametri rest nelle funzioni» è gratuita?

Sì — il testo completo di «Parametri rest nelle funzioni» è 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 4 lezioni in totale.

Cosa imparerò in «Parametri rest nelle funzioni»?

Definisca il tipo di funzioni che accettano un numero qualsiasi di argomenti. 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 4.

Quanto tempo richiede la lezione «Parametri rest nelle funzioni»?

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. Parametri rest nelle funzioni
  2. Spread in array e oggetti
  3. Elementi rest nelle tuple
  4. Tipizzare le funzioni variadiche
← Torna a TypeScript Academy