0Pricing
TypeScript Academy · Lezione

Overload delle funzioni e firme di chiamata

Dichiari firme di overload per diverse forme di chiamata e utilizzi firme di chiamata nei tipi oggetto per API flessibili.

Overload delle funzioni e firme di chiamata è 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: modellare funzioni che accettano input diversi e restituiscono output diversi usando gli overload, e descrivere le firme di chiamata nei tipi oggetto per API simili a quelle basate su callback.

Modello degli overload

Gli overload vengono dichiarati come più firme seguite da un'unica implementazione che restringe gli input e restituisce il tipo corretto.

// 1) Overload signatures (no body)
function parse(input: string): number;
function parse(input: number): string;
// 2) Single implementation compatible with all overloads
function parse(input: string | number): string | number {
  if (typeof input === "string") {
    return input.length; // string -> number
  } else {
    return String(input); // number -> string
  }
}

console.log(parse("TS"));   // 2 (number)
console.log(parse(123));    // "123" (string)

Firme di chiamata

Una firma di chiamata consente di rendere un tipo oggetto chiamabile con overload (utile per le librerie che espongono funzioni chiamabili con proprietà).

type Stringify = {
  (v: number): string;
  (v: boolean): string;
};

const toStr: Stringify = (v: number | boolean) => {
  return typeof v === "number" ? v.toFixed(1) : (v ? "true" : "false");
};

console.log(toStr(3));
console.log(toStr(false));

Narrowing nell'implementazione

L'implementazione deve gestire tutte le forme degli overload. Utilizzi controlli in o unioni discriminate per diramare il codice in sicurezza.

function area(value: { r: number } | { w: number; h: number }): number {
  if ("r" in value) {
    return Math.PI * value.r ** 2; // circle
  }
  return value.w * value.h; // rect
}

console.log(area({ r: 2 }));
console.log(area({ w: 3, h: 4 }));

Overload e unioni

Overload e unioni:

  • Gli overload forniscono tipi restituiti precisi per ogni chiamata.
  • Le unioni mantengono un'unica firma, più semplice ma meno specifica.
  • Scelga gli overload quando chi effettua le chiamate beneficia di tipi restituiti esatti.

Suggerimenti per la DX

Suggerimenti:

  • Mantenga ridotto e chiaro il numero di overload.
  • Documenti le differenze nei parametri e nei valori restituiti.
  • Preferisca la precisione del tipo restituito quando migliora l'esperienza d'uso.

Verifica degli overload

Verifica rapida: quale schema dichiara correttamente gli overload di una funzione?

Riepilogo

Riepilogo: utilizzi gli overload per ottenere tipi precisi a ogni chiamata e le firme di chiamata per modellare oggetti chiamabili. Esegua il narrowing all'interno dell'unica implementazione per gestire ogni caso.

Domande Frequenti

La lezione «Overload delle funzioni e firme di chiamata» è gratuita?

Sì — il testo completo di «Overload delle funzioni e firme di chiamata» è 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 «Overload delle funzioni e firme di chiamata»?

Dichiari firme di overload per diverse forme di chiamata e utilizzi firme di chiamata nei tipi oggetto per API flessibili. 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 «Overload delle funzioni e firme di chiamata»?

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. Overload delle funzioni e firme di chiamata
  2. Tipizzazione del parametro this; void e never
  3. Funzioni di asserzione e guardie di tipo definite dall’utente
← Torna a TypeScript Academy