Funzioni predicato e operatore satisfies
Scriva guardie di tipo personalizzate con tipi predicato nel valore restituito e validi gli oggetti con l’operatore satisfies senza allargare i tipi.
Funzioni predicato e operatore satisfies è 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: creare funzioni predicato che restringano i tipi (ad esempio, value is T) e usare satisfies per verificare le strutture senza ampliarle.
- Guardie personalizzate = controlli riutilizzabili a runtime
satisfies= controllo della struttura in fase di compilazione, con conservazione dei valori letterali
Nozioni di base sui predicati
Una funzione predicato restituisce x is Type. Dopo il controllo, la variabile viene ristretta nell'ambito corrente.
function isNumber(x: unknown): x is number {
return typeof x === "number"
}
function demo(a: unknown) {
if (isNumber(a)) {
// inside: a is number
return a.toFixed(2)
}
return "not a number"
}Guardia della struttura
La guardia verifica la struttura degli oggetti; se il controllo ha esito positivo, il valore viene riconosciuto come User e può essere utilizzato in sicurezza.
type User = { id: number; name: string }
function isUser(v: unknown): v is User {
return typeof v === "object" && v !== null &&
"id" in v && "name" in v &&
typeof (v as any).id === "number" &&
typeof (v as any).name === "string"
}
function printUser(u: unknown) {
if (isUser(u)) {
console.log(u.name.toUpperCase())
} else {
console.log("invalid user")
}
}Attraverso i confini
Le guardie garantiscono un passaggio sicuro attraverso i confini delle funzioni: unknown all'esterno, User sotto controllo all'interno.
function fetchAndPrint(json: string) {
const value: unknown = JSON.parse(json)
if (isUser(value)) {
// value narrowed to User
console.log(`User #${value.id}: ${value.name}`)
} else {
console.log("Bad payload")
}
}satisfies (configurazione)
satisfies verifica che l'espressione sia conforme a Confige, ma conserva il tipo letterale della variabile.
type Config = { mode: "dev" | "prod"; retries: number }
const cfg = {
mode: "prod",
retries: 3,
// timeout: 1000, // Error with satisfies if not in type
} satisfies Config
// cfg.mode is still the literal "prod" (not widened to string)
// and adding unknown keys raises an error at compile-timesatisfies (array)
Negli array, la struttura degli elementi viene convalidata con as const satisfies; i valori letterali vengono conservati e il completamento automatico viene migliorato.
type Route = { path: `/${string}`; method: "GET" | "POST" }
const routes = [
{ path: "/", method: "GET" },
{ path: "/login", method: "POST" }
] as const satisfies ReadonlyArray<Route>
// each element is checked against Route, literals preserved for DXControllo di satisfies
Controllo rapido: che cosa fa realmente satisfies?
Riepilogo
Riepilogo: I predicati (x is T) definiscono contratti; satisfies conferma la forma e conserva i tipi letterali. Utilizzare entrambi insieme.
Domande Frequenti
La lezione «Funzioni predicato e operatore satisfies» è gratuita?
Sì — il testo completo di «Funzioni predicato e operatore satisfies» è 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 «Funzioni predicato e operatore satisfies»?
Scriva guardie di tipo personalizzate con tipi predicato nel valore restituito e validi gli oggetti con l’operatore satisfies senza allargare i tipi. 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 «Funzioni predicato e operatore satisfies»?
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
- Switch completi e controlli con never
- Funzioni predicato e operatore satisfies
- Affinare le unioni oltre i confini delle funzioni