satisfies e asserzione as a confronto
Scopra perché satisfies è più sicuro del casting con as.
satisfies e asserzione as a confronto è 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.
Cosa fa as
L'asserzione as dice al compilatore di fidarsi di Lei riguardo a un tipo. Non verifica che il valore sia effettivamente compatibile: sovrascrive semplicemente il tipo inferito.
const value = { color: "red" } as { color: string; size: number };
// No error even though size is missing!
console.log(value.color);as aggira la sicurezza
Poiché as salta la validazione, può nascondere bug reali. All'oggetto precedente manca size, ma TypeScript rimane in silenzio.
type Config = { color: string; size: number };
const broken = { color: "red" } as Config;
// broken.size is typed number but is actually undefined at runtime
console.log(broken.size); // undefinedsatisfies valida invece il valore
Sostituire as con satisfies trasforma quel bug silenzioso in un chiaro errore di compilazione, perché l'oggetto deve effettivamente corrispondere al tipo.
type Config = { color: string; size: number };
// const c = { color: "red" } satisfies Config; // Error: size missing
const c = { color: "red", size: 10 } satisfies Config;
console.log(c.size);as può forzare tipi errati
È persino possibile asserire tipi completamente incompatibili con una doppia asserzione, una pratica pericolosa che dovrebbe essere rara.
const n = "hello" as unknown as number;
// n is typed number but is actually a string
console.log(typeof n); // "string"satisfies non altera i valori
A differenza di as, satisfies non può essere usato per dichiarare un tipo incompatibile. Si limita a confermare che il valore è già compatibile.
// const x = "hello" satisfies number; // Error: string not assignable to number
const y = 42 satisfies number;
console.log(y);as perde i controlli sulle proprietà in eccesso
Con as, le chiavi aggiuntive o scritte in modo errato passano inosservate. satisfies continua invece a segnalarle, rilevando gli errori di battitura.
type Config = { mode: string };
const withAs = { mdoe: "dark" } as Config; // typo passes silently
// const withSat = { mdoe: "dark" } satisfies Config; // Error: mdoe
console.log(JSON.stringify(withAs));Quando as è realmente necessario
as ha utilizzi validi, ad esempio per restringere unknown dopo un controllo a runtime o per lavorare con il DOM. Tuttavia, per gli oggetti di configurazione, preferisca satisfies.
const data: unknown = JSON.parse("{ }");
// After your own runtime validation, as can express the result.
const obj = data as Record<string, unknown>;
console.log(typeof obj);Preferire satisfies per le configurazioni
Per configurazioni, mappe di route e palette, satisfies offre validazione e inferenza precisa. as non offre né validazione né garanzie.
type Palette = Record<string, string>;
const safe = { primary: "blue", accent: "gold" } satisfies Palette;
console.log(safe.primary);as const è diverso
Non confonda as const con un'asserzione di tipo. as const restringe ai valori letterali e rende gli elementi di sola lettura; è sicuro e spesso viene usato insieme a satisfies.
type Nums = readonly number[];
const xs = [1, 2, 3] as const satisfies Nums;
console.log(xs[0]);Riepilogo dei rischi
as: sovrascrive il compilatore, non esegue controlli e può nascondere bug. satisfies: collabora con il compilatore, esegue controlli completi e preserva l'inferenza. Scelga satisfies per impostazione predefinita.
type Config = { level: number };
// const risky = {} as Config; // compiles, level is undefined
const safe = { level: 1 } satisfies Config;
console.log(safe.level);Da as a satisfies durante il refactoring
Una buona abitudine: quando vede as SomeObjectType applicato a un valore letterale che controlla, provi a sostituirlo con satisfies e corregga gli eventuali errori.
type Config = { url: string; retries: number };
// Before: const c = { url: "/api" } as Config;
const c = { url: "/api", retries: 3 } satisfies Config;
console.log(c.url, c.retries);Verifica rapida: satisfies e as
Verifichi di aver compreso la differenza tra satisfies e as.
Riepilogo: satisfies e asserzione as
Ha imparato che as aggira i controlli e può nascondere bug, mentre satisfies valida il valore e mantiene un'inferenza precisa. Preferisca satisfies per gli oggetti di configurazione che controlla.
type Config = { color: string; size: number };
const c = { color: "red", size: 10 } satisfies Config;
console.log(c.color, c.size);Domande Frequenti
La lezione «satisfies e asserzione as a confronto» è gratuita?
Sì — il testo completo di «satisfies e asserzione as a confronto» è 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 «satisfies e asserzione as a confronto»?
Scopra perché satisfies è più sicuro del casting con as. 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 «satisfies e asserzione as a confronto»?
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
- Perché esiste satisfies
- satisfies e annotazione di tipo a confronto
- satisfies e asserzione as a confronto
- Pattern pratici con satisfies