[key: string]: T Assinaturas de índice

Última atualização: 2026-10-22

[key: string]: T Assinaturas de índice

Assinaturas de índice descrevem objetos com chaves arbitrárias mas um tipo de valor uniforme — dicionários, contadores, mapas de configuração. Escritas como [key: string]: T.

GrupoComposição de Tipos
TipoSintaxe
Modo strictNão necessário

ℹ️ Info O editor transpila TypeScript para JavaScript e o executa (sem verificação de tipos); veja a Saída de cada exemplo para o resultado da verificação.

📝 Sintaxe

const dict: { [key: string]: number } = {};
dict["a"] = 1;
// Escrita equivalente com tipo utilitário
const same: Record<string, number> = {};

⚙️ Parâmetros

[key: string]O tipo da chave deve ser string, number, symbol ou uma união; o nome da key é arbitrário
[i: number][i: number]: T descreve acesso por índice; o tipo do índice number deve ser subtipo do índice string

Retorno:Nenhum valor de retorno — assinaturas de índice existem apenas na camada de tipos e não produzem código em tempo de execução.

▶ Exemplo

Edite o código abaixo e clique em Testar para ver o resultado transpilado:

Saída:

180 0

(Saída de execução após a transpilação; scores["Bob"] é tipado como number sem erro — assinaturas de índice declaram que toda chave existe)

💡 Observações

ℹ️ Info Record<string, number> significa o mesmo que { [key: string]: number }; a forma utilitária é mais comum.
⚠️ Atenção Assinaturas de índice tornam toda chave legal: scores["Bob"] passa mesmo sob strict, e erros de digitação escapam. Para um conjunto finito de chaves, use Record<"a" | "b", T> ou mapped types.
💡 Dica Para valores mistos, use uma união — { [key: string]: string | number } — e estreite após ler.
Mais casos em breve.

📚 Tutoriais relacionados

❓ Perguntas frequentes

P Assinatura de índice vs Record<K, V>?
R Equivalentes em poder — Record é uma assinatura de índice implementada via mapped types. Record é mais conciso e também pode fixar uma união exata de chaves.
P Por que acessar uma chave inexistente não dá erro?
R Essa é a semântica: toda chave string existe com tipo T. Para capturar erros de digitação, fixe as chaves com Record<"a" | "b", T> ou ative noUncheckedIndexedAccess.
P Assinaturas de índice number e string podem coexistir?
R Sim, mas o tipo de valor do índice number deve ser subtipo do do índice string (chaves numéricas do JS viram chaves string por baixo dos panos).
Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%