Tipizzazione degli errori (unknown), restrizione nei blocchi catch
Tipizzi i parametri catch come unknown, quindi li restringa con instanceof/typeof o guardie personalizzate per gestire gli errori in sicurezza.
Tipizzazione degli errori (unknown), restrizione nei blocchi catch è 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: catturare gli errori come unknown e restringerne il tipo in modo sicuro. Userà instanceof, typeof e type guard personalizzati per leggere i dati degli errori senza sorprese.
unknown e instanceof
Inizi con unknown. Restringa il tipo con instanceof Error per accedere a message, stack e così via.
async function boom(): Promise<void> { throw new Error("boom") }
async function run() {
try {
await boom();
} catch (e: unknown) {
if (e instanceof Error) {
console.error("Handled:", e.message);
} else {
console.error("Non-Error thrown:", e);
}
}
}
run();typeof per i primitivi
Alcuni codici generano stringhe o altri valori primitivi. Usi typeof per restringere il tipo e gestire il caso in modo appropriato.
function throwString() { throw "bad" }
try {
throwString();
} catch (e: unknown) {
if (typeof e === "string") {
console.warn("string error:", e.toUpperCase());
} else {
console.warn("other error", e);
}
}Guard personalizzato
Crei un user-defined type guard per riconoscere strutture “simili a errori” provenienti da diversi livelli.
type ErrorLike = { message: string; code?: string };
function isErrorLike(e: unknown): e is ErrorLike {
return !!e && typeof e === "object" && "message" in e;
}
try {
throw { message: "oops", code: "E_BAD" };
} catch (e: unknown) {
if (isErrorLike(e)) {
console.error(e.message, e.code ?? "no-code");
} else {
console.error("unknown error", e);
}
}Registrazione sicura
Centralizzi la gestione degli errori. Un piccolo helper restringe il tipo e registra l’errore in modo sicuro, evitando che la registrazione stessa causi arresti anomali.
function logErrorSafe(e: unknown): void {
if (e instanceof Error) {
console.error("Error:", e.message);
} else if (typeof e === "string") {
console.error("Error(string):", e);
} else {
try {
console.error("Error(obj):", JSON.stringify(e));
} catch {
console.error("Error(unknown)");
}
}
}
try { throw { oops: true } } catch (e: unknown) { logErrorSafe(e) }Suggerimenti
Suggerimenti:
- Preferisca unknown in catch.
- Restringa il tipo con
instanceof,typeofo appositi guard. - Eviti di dare per scontato
Error: il codice di terze parti può generare qualsiasi cosa.
Verifica della tipizzazione degli errori
Verifica rapida: perché è preferibile usare unknown in catch?
Riepilogo
Riepilogo: catturi gli errori come unknown, ne restringa il tipo con instanceof/typeof o guard personalizzati e centralizzi la registrazione sicura.
Impara TypeScript con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 101
- Lezioni
- 352
Domande Frequenti
La lezione «Tipizzazione degli errori (unknown), restrizione nei blocchi catch» è gratuita?
Sì — il testo completo di «Tipizzazione degli errori (unknown), restrizione nei blocchi catch» è 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 «Tipizzazione degli errori (unknown), restrizione nei blocchi catch»?
Tipizzi i parametri catch come unknown, quindi li restringa con instanceof/typeof o guardie personalizzate per gestire gli errori in sicurezza. 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 «Tipizzazione degli errori (unknown), restrizione nei blocchi catch»?
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
- Promise , tipizzazione di async/await
- Tipizzazione degli errori (unknown), restrizione nei blocchi catch
- Tipi dei pattern di concorrenza (all/settled/race)