TypeScript · Intermediário · Português · Técnico
assinatura de índice
Declaração [chave: string]: T que permite a um objeto ter qualquer quantidade de propriedades com chaves do tipo indicado, todas com o mesmo tipo de valor.
Onde usar
Usada em dicionários e mapas de dados dinâmicos. Em PR, vale considerar Record ou Map; e com noUncheckedIndexedAccess o acesso passa a incluir undefined, o que evita surpresas.
Em código
interface Precos {
[produto: string]: number;
}
const p: Precos = { cafe: 8, leite: 5 };
p['pao'] = 1;
const x = p['inexistente']; // number (!)Exemplos
Usei uma assinatura de índice porque as chaves vêm do servidor.
Com a assinatura de índice, o acesso por chave retorna number, mesmo se não existir.
Cuidado
Todas as propriedades nomeadas do tipo precisam ser compatíveis com o tipo do índice. E sem noUncheckedIndexedAccess, obj[k] vem como T mesmo quando a chave não existe.
Sinônimos
index signature