O tipo Record do TypeScript, explicado com as suas próprias chaves

Tipo Record do TypeScript

Record<K, V> no TypeScript: objetos de consulta tipados | We.Inc

Monte um tipo Record<K, V> com as suas chaves e veja o objeto que ele descreve. Saiba quando Record supera uma index signature ou um Map, e quais erros ele pega.

Record<K, V> é um utility type nativo para um objeto cujas chaves vêm de K e cujos valores têm todos o tipo V. Passe uma união de string literals e o compilador exige que todas as chaves listadas estejam presentes. Passe string simples e ele se comporta como um dicionário aberto, igual a uma index signature.

Record em resumo

Digite as chaves que quiser e escolha um tipo de valor. O gerador escreve o tipo Record, o tipo de objeto simples em que ele se expande e um objeto inicial com uma linha por chave, para você ver exatamente o que o compilador vai cobrar antes de colar no seu código.

Perguntas frequentes

Record é o mesmo que uma index signature?

Com uma chave ampla como string, sim: Record<string, number> e { [key: string]: number } descrevem o mesmo formato. A diferença aparece com chaves literais. Uma index signature não consegue exigir que nomes específicos existam, enquanto Record<"a" | "b", number> exige a e b.

Quando devo usar um Map em vez de um Record?

Use um Map quando chaves são adicionadas e removidas com frequência, quando as chaves não são strings ou quando você precisa da contagem de entradas por size. Use um Record para um conjunto fixo de nomes, para objetos de configuração e para tudo que você envia por JSON.stringify.

Por que o TypeScript diz que falta uma propriedade no meu Record?

Porque o tipo da chave é uma união e o objeto deixa um membro de fora. O tsc informa, por exemplo, Property 'about' is missing in type '{ home: string; }'. Adicione a chave, ou envolva o tipo em Partial se deixá-la de fora for válido.

Record existe em tempo de execução?

Não. É só um tipo e desaparece quando o código é compilado. O objeto que você cria é um objeto JavaScript comum, então o compilador não consegue impedir que uma resposta do servidor tenha chaves a mais ou a menos.

Qual versão do TypeScript adicionou o Record?

O Record chegou no TypeScript 2.1, junto com Partial, Readonly e Pick, então qualquer compilador atual o tem.

Como o Record é construído

Chaves fechadas versus chaves abertas

Record, index signature ou Map

Padrões que você vai usar mais

Chaves a partir de um array as const

O array é a única fonte de verdade. Adicione um status a ele e o compilador aponta para a tabela de rótulos até você adicionar o rótulo também.

Uma flag por campo de outro tipo

keyof transforma um tipo existente na união de chaves, então o objeto de estado touched de um formulário sempre lista os mesmos campos que o formulário.

Um dicionário aberto, lido com segurança

Com noUncheckedIndexedAccess ativado, uma leitura por chave calculada é number | undefined, então o fallback é obrigatório em vez de esquecido.

Gerador de tipo Record

Chaves, separadas por vírgulas

Tipo de valor

Chaves opcionais (envolver em Partial)

O tipo

No que ele se expande

Um objeto inicial

Digite pelo menos uma chave. As chaves precisam começar com uma letra, _ ou $.

Comece grátis · Sem cartão de crédito

Relacionados: Guias

Produto

Para quem é

Recursos

Recursos

Empresa

Mapa do site