Tipi di accesso indicizzato
Ricavi i tipi delle proprietà con la sintassi T[K].
Tipi di accesso indicizzato è 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.
Ricerca dei tipi delle proprietà
I tipi di accesso indicizzato consentono di cercare il tipo di una proprietà usando la sintassi tra parentesi quadre in una posizione di tipo: Obj['prop']. È come leggere un valore, ma a livello di tipo.
Accesso indicizzato di base
Indicizzi un tipo con una chiave letterale per estrarre il tipo della relativa proprietà. User['name'] restituisce string.
interface User { id: number; name: string }
type NameType = User["name"] // string
const n: NameType = "Ada"
console.log(n)Perché non scrivere semplicemente il tipo
L'accesso indicizzato mantiene i tipi sincronizzati. Se User.name cambia da string a un altro tipo, ogni User['name'] si aggiorna automaticamente, senza modifiche manuali.
interface Product { price: { amount: number; currency: string } }
type Price = Product["price"] // { amount: number; currency: string }
const p: Price = { amount: 10, currency: "USD" }
console.log(p)Accesso con un'unione di chiavi
Indicizzare con un'unione di chiavi restituisce un'unione dei tipi dei relativi valori. User['id' | 'name'] produce number | string.
interface User { id: number; name: string }
type IdOrName = User["id" | "name"] // number | string
const v: IdOrName = 5
console.log(v)Obj[keyof Obj] per tutti i valori
Indicizzare con keyof Obj restituisce un'unione di tutti i tipi dei valori dell'oggetto, cioè l'insieme completo dei tipi dei suoi valori.
interface Config { host: string; port: number; secure: boolean }
type Values = Config[keyof Config] // string | number | boolean
const v: Values = true
console.log(v)Tipo degli elementi di un array con [number]
Per un tipo array, indicizzare con number consente di ottenere il tipo dei suoi elementi. string[][number] è string.
type Names = string[]
type Item = Names[number] // string
const x: Item = "Ada"
console.log(x)Tipo degli elementi di una tupla
Indicizzare una tupla con number restituisce l'unione dei tipi di tutti i suoi elementi, utile per derivare il tipo di un valore da un elenco fisso.
type Pair = [string, number]
type Element = Pair[number] // string | number
const e: Element = 42
console.log(e)Combinazione con typeof
Indicizzi il tipo di un valore tramite typeof. Insieme a [number] su un array as const, permette di derivare un'unione dei valori letterali dell'array.
const colors = ["red", "green", "blue"] as const
type Color = typeof colors[number] // "red" | "green" | "blue"
const c: Color = "green"
console.log(c)Accesso indicizzato annidato
Concateni gli accessi per esplorare i tipi annidati. Ogni parentesi quadra scende di un livello nella struttura.
interface Data { user: { profile: { age: number } } }
type Age = Data["user"]["profile"]["age"] // number
const a: Age = 36
console.log(a)Accesso indicizzato nei generics
Il modello T[K] con K extends keyof T è alla base dei getter sicuri rispetto ai tipi: il tipo restituito è esattamente quello della proprietà cercata.
function get<T, K extends keyof T>(obj: T, key: K): T[K] {
return obj[key]
}
const port = get({ host: "x", port: 80 }, "port")
console.log(port) // 80, typed as numberUna derivazione pratica
L'accesso indicizzato evita di duplicare i tipi: derivi il tipo degli argomenti di una funzione direttamente da un oggetto del dominio, invece di riscriverlo.
interface Order { items: { sku: string; qty: number }[] }
type LineItem = Order["items"][number] // { sku: string; qty: number }
const li: LineItem = { sku: "A1", qty: 2 }
console.log(li)Verifica rapida
Verifichi la sua comprensione dei tipi con accesso indicizzato.
Riepilogo
I tipi con accesso indicizzato (Obj['prop']) cercano il tipo di una proprietà, mantenendosi sincronizzati con la sorgente. Indicizzi con un'unione di chiavi per ottenere un'unione di tipi di valori, con keyof Obj per tutti i valori e con number per i tipi degli elementi di array o tuple. Concateni le parentesi quadre per gli accessi annidati e combini con typeof e i generics (T[K]) per derivazioni sicure rispetto ai tipi.
Domande Frequenti
La lezione «Tipi di accesso indicizzato» è gratuita?
Sì — il testo completo di «Tipi di accesso indicizzato» è 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 «Tipi di accesso indicizzato»?
Ricavi i tipi delle proprietà con la sintassi T[K]. 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 «Tipi di accesso indicizzato»?
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
- L’operatore di tipo typeof
- L’operatore di tipo keyof
- Tipi di accesso indicizzato
- Combinare typeof e keyof