0Pricing
TypeScript Academy · Lezione

Restringimento degli errori intercettati (unknown o Error)

Gestisca in sicurezza gli errori intercettati e tipizzati come unknown.

Restringimento degli errori intercettati (unknown o Error) è una lezione TypeScript Academy gratuita su CoddyKit. Questa è la lezione 3 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.

Benvenuto

A partire da TypeScript 4.0, gli errori catturati hanno tipo unknown. Questo impone di restringere esplicitamente il tipo prima di usare le proprietà dell'errore.

Modifica in TS 4.0

TypeScript 4.0 ha introdotto useUnknownInCatchVariables. In modalità strict, gli errori catturati hanno tipo unknown.
// err is now: unknown
try { doSomething(); }
catch (err) {
  // err.message; // Error — cannot access on unknown
}

Restringimento con instanceof

Utilizzi instanceof Error per accedere in sicurezza alle proprietà dell'errore.
catch (err) {
  if (err instanceof Error) {
    console.error(err.message, err.stack);
  } else {
    console.error('Unknown error:', String(err));
  }
}

Type guard isError

Crei un type guard riutilizzabile per restringere il tipo dell'errore.
function isError(e: unknown): e is Error {
  return e instanceof Error;
}
catch (e) {
  if (isError(e)) console.error(e.message);
}

Restringimento degli errori personalizzati

Restringa il tipo agli errori personalizzati nei blocchi catch.
catch (err) {
  if (err instanceof NetworkError) { /* retry */ }
  else if (err instanceof AuthError) { /* redirect */ }
  else if (err instanceof Error) { /* generic */ }
  else throw err;
}

useUnknownInCatchVariables

Questo flag, incluso in strict a partire da TS 4.4, impone il tipo unknown per gli errori catturati.
{ "compilerOptions": { "useUnknownInCatchVariables": true } }

Errori stringa

Alcuni codici generano stringhe invece di oggetti Error. Gestisca entrambi i casi.
catch (err) {
  const message = err instanceof Error ? err.message : String(err);
  console.error(message);
}

Helper typed throw

Crei un helper che generi sempre un Error tipizzato.
function throwErr(msg: string, code = 500): never {
  const e: AppError = Object.assign(new Error(msg), { statusCode: code });
  throw e;
}

Rilanciare errori unknown

Rilanci gli errori che non è possibile gestire.
catch (err) {
  if (err instanceof KnownError) handle(err);
  else throw err; // propagate unknowns
}

Error boundary in React

Gli error boundary di React devono gestire gli errori unknown provenienti dai metodi del ciclo di vita.
componentDidCatch(error: unknown, info: ErrorInfo) {
  if (error instanceof Error) logError(error.message);
}

Testare gli errori catturati

Testi la gestione degli errori con asserzioni tipizzate.
test('catches errors', async () => {
  jest.spyOn(api, 'fetch').mockRejectedValue(new NetworkError());
  const result = await safeRun();
  expect(result.ok).toBe(false);
});

Verifica rapida

Qual è il tipo dell'errore catturato `err` in modalità strict con TypeScript 4.4 o versioni successive?

Riepilogo

Restringere il tipo degli errori catturati (unknown e Error): ha appreso i concetti chiave di questo argomento e come applicarli in progetti TypeScript reali.

Domande Frequenti

La lezione «Restringimento degli errori intercettati (unknown o Error)» è gratuita?

Sì — il testo completo di «Restringimento degli errori intercettati (unknown o Error)» è 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 «Restringimento degli errori intercettati (unknown o Error)»?

Gestisca in sicurezza gli errori intercettati e tipizzati come unknown. 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 3 di 4.

Quanto tempo richiede la lezione «Restringimento degli errori intercettati (unknown o Error)»?

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. Classi e gerarchie di errori tipizzate
  2. Il pattern Result: Ok ed Err
  3. Restringimento degli errori intercettati (unknown o Error)
  4. Gestione degli errori nel codice TypeScript asincrono
← Torna a TypeScript Academy