Tipos de Acesso Indexado
Consulte os tipos de propriedades usando a sintaxe T[K].
Tipos de Acesso Indexado é uma aula grátis de TypeScript Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de TypeScript Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de TypeScript Academy inclui 4 aulas no total.
Consultando tipos de propriedades
Os tipos de acesso indexado permitem consultar o tipo de uma propriedade usando a sintaxe de colchetes em uma posição de tipo: Obj['prop']. É como ler um valor, mas no nível dos tipos.
Acesso indexado básico
Indexe um tipo com uma key literal para extrair o tipo dessa propriedade. User['name'] fornece string.
interface User { id: number; name: string }
type NameType = User["name"] // string
const n: NameType = "Ada"
console.log(n)Por que não escrever simplesmente o tipo
O acesso indexado mantém os tipos sincronizados. Se User.name mudar de string para outra coisa, todo User['name'] será atualizado automaticamente — sem edições manuais.
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)Acessando com uma união de keys
Indexe com uma união de keys para obter uma união dos tipos de seus valores. User['id' | 'name'] produz 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] para todos os valores
Indexe com keyof Obj para obter uma união de todos os tipos de valores do objeto — seu conjunto completo de tipos de valores.
interface Config { host: string; port: number; secure: boolean }
type Values = Config[keyof Config] // string | number | boolean
const v: Values = true
console.log(v)Tipo de elemento de vetor com [number]
Para um tipo de vetor, indexe com number para obter seu tipo de elemento. string[][number] é string.
type Names = string[]
type Item = Names[number] // string
const x: Item = "Ada"
console.log(x)Tipo de elemento de uma tupla
Indexar uma tupla com number fornece a união de todos os tipos de seus elementos — útil para derivar um tipo de valor a partir de uma lista fixa.
type Pair = [string, number]
type Element = Pair[number] // string | number
const e: Element = 42
console.log(e)Combinação com typeof
Indexe o tipo de um valor por meio de typeof. Junto com [number] em um vetor as const, isso deriva uma união dos valores literais do vetor.
const colors = ["red", "green", "blue"] as const
type Color = typeof colors[number] // "red" | "green" | "blue"
const c: Color = "green"
console.log(c)Acesso indexado aninhado
Encadeie consultas para explorar tipos aninhados. Cada par de colchetes desce um nível na estrutura.
interface Data { user: { profile: { age: number } } }
type Age = Data["user"]["profile"]["age"] // number
const a: Age = 36
console.log(a)Acesso indexado em genéricos
O padrão T[K] com K extends keyof T é o mecanismo por trás de acessadores seguros quanto aos tipos: o tipo retornado é exatamente o tipo da propriedade consultada.
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 numberUma derivação prática
O acesso indexado evita a duplicação de tipos: derive diretamente um tipo de argumento de função a partir de um objeto de domínio, em vez de declará-lo novamente.
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ção rápida
Teste sua compreensão dos tipos de acesso indexado.
Recapitulação
Os tipos de acesso indexado (Obj['prop']) consultam o tipo de uma propriedade, mantendo-se sincronizados com a origem. Faça a indexação com uma união de chaves para obter uma união de tipos de valores, com keyof Obj para todos os valores e com number para tipos de elementos de vetores ou tuplas. Encadeie colchetes para consultas aninhadas e combine com typeof e genéricos (T[K]) para obter derivações seguras quanto aos tipos.
Perguntas Frequentes
A aula “Tipos de Acesso Indexado” é grátis?
Sim — o texto completo de “Tipos de Acesso Indexado” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de TypeScript Academy, atualize para CoddyKit PRO. O curso de TypeScript Academy inclui 4 aulas no total.
O que vou aprender em “Tipos de Acesso Indexado”?
Consulte os tipos de propriedades usando a sintaxe T[K]. Você pratica TypeScript Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar TypeScript Academy?
Nenhuma experiência prévia é necessária. TypeScript Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Tipos de Acesso Indexado”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de TypeScript Academy?
Sim. Cada aula de TypeScript Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- O Operador de Tipo typeof
- O Operador de Tipo keyof
- Tipos de Acesso Indexado
- Combinando typeof e keyof