0Pricing
TypeScript Academy · Lezione

Eliminare any; preferire unknown e la restrizione

Sostituisca any con unknown e la restrizione; aggiunga piccole guardie e funzioni di asserzione; attivi gradualmente i flag strict senza interrompere la build.

Eliminare any; preferire unknown e la restrizione è una lezione TypeScript Academy gratuita su CoddyKit. Questa è la lezione 1 di 2. 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 2 lezioni in totale.

Introduzione

Obiettivo: eliminare i punti critici in cui compare any. Preferisca unknown per i valori non attendibili e ne restringa il tipo con semplici verifiche. Aggiungerà piccole guardie e abiliterà i flag strict un passaggio alla volta.

  • any → unknown
  • restringimento del tipo con typeof/in/instanceof
  • funzioni di asserzione

Insidie di any

any disattiva la sicurezza dei tipi: forme errate o operazioni aritmetiche tra stringhe superano la compilazione e causano errori in seguito.

// any hides bugs
function avgBad(values: any): number {
  // Compiles even if values is not an array of numbers
  return values.reduce((a: number, b: number) => a + b, 0) / values.length
}

// Runtime crash examples:
// avgBad(123)
// avgBad(["1","2"]) // string addition!

unknown e restringimento del tipo

Usi unknown per gli input provenienti dall'esterno. Ne restringa il tipo con Array.isArray e typeof, quindi esegua i calcoli in sicurezza.

// unknown forces checks
function avg(values: unknown): number {
  if (!Array.isArray(values)) throw new Error("values must be an array")
  const nums = values.filter((v): v is number => typeof v === "number")
  if (nums.length === 0) throw new Error("no numbers")
  const sum = nums.reduce((a, b) => a + b, 0)
  return sum / nums.length
}

// avg([1,2,3]) → 2; avg("oops") throws early with a clear message

Guardie di tipo

Crei un predicato x is T per restringere il tipo in modo chiaro nei chiamanti. Mantenga le guardie piccole e focalizzate sui controlli strutturali.

// Small predicate to reuse narrowing
export type User = { id: string; name: string }

export function isUser(x: unknown): x is User {
  return typeof x === "object" && x !== null
    && typeof (x as any).id === "string"
    && typeof (x as any).name === "string"
}

export function hello(x: unknown) {
  if (!isUser(x)) throw new Error("invalid user")
  return `Hello, ${x.name}`
}

Funzioni di asserzione

Le funzioni di asserzione (asserts x is T) restringono il tipo dopo la loro esecuzione. Le usi per le precondizioni obbligatorie e generi errori con messaggi chiari.

// Assertion function throws or narrows
function assertUser(x: unknown): asserts x is { id: string; name: string } {
  if (typeof x !== "object" || x === null) throw new Error("not an object")
  const o = x as Record<string, unknown>
  if (typeof o.id !== "string" || typeof o.name !== "string") throw new Error("bad user")
}

export function greetUnsafe(x: unknown) {
  assertUser(x) // now x is narrowed after this call
  return `Hi ${x.name}`
}

Piano per la strictness

Piano:

  • Attivi noImplicitAny e risolva prima i nuovi errori.
  • Introduca guardie per gli input esterni.
  • Abiliti strictNullChecks e gestisca esplicitamente undefined.
  • Monitòr i restanti any con ESLint e li riduca nel tempo.

Verifica di unknown e any

Verifica rapida: perché preferire unknown a any per i dati non attendibili?

Riepilogo

Riepilogo: sostituisca any con unknown, aggiunga piccole guardie o asserzioni e aumenti gradualmente i flag strict per mantenere le build funzionanti.

Domande Frequenti

La lezione «Eliminare any; preferire unknown e la restrizione» è gratuita?

Sì — il testo completo di «Eliminare any; preferire unknown e la restrizione» è 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 2 lezioni in totale.

Cosa imparerò in «Eliminare any; preferire unknown e la restrizione»?

Sostituisca any con unknown e la restrizione; aggiunga piccole guardie e funzioni di asserzione; attivi gradualmente i flag strict senza interrompere la build. 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 2.

Quanto tempo richiede la lezione «Eliminare any; preferire unknown e la restrizione»?

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. Eliminare any; preferire unknown e la restrizione
  2. Applicare gradualmente i flag strict
← Torna a TypeScript Academy