Record<Keys, Type>

Crée un type d’objet avec des clés données, où chaque valeur a le même type.

Sur cette page

Exemple

#
TypeScript
type Course = 'html' | 'javascript' | 'python'

const modules: Record<Course, number> = {
  html: 11,
  javascript: 16,
  python: 12
}

const total = Object.values(modules).reduce((sum, n) => sum + n, 0)
console.log(total)
Résultat
39

Définition et utilisation

#

Record<Keys, Type> décrit un objet dont les clés appartiennent au type Keys, et dont toutes les valeurs ont le type Type. Record<string, number> est un dictionnaire de nombres, et Record<"html" | "css", number> un objet avec exactement deux champs.

Avec une union de littéraux comme clés, le compilateur exige tous les champs. Si vous ajoutez une nouvelle variante à l’union, chaque Record utilisant cette union signale un champ manquant, ce qui aide à garder la cohérence.

C’est une alternative plus lisible à la signature d’index { [key: string]: T }, et le type de référence pour les tables de configuration, les traductions ou les compteurs.

Syntaxe

#
Syntaxe
type New = Record<Keys, ValueType>

Paramètres de type

#
  • Keys

    string, number, symbol ou union de littéraux

    Les clés autorisées.
  • Type

    type quelconque

    Le type de chaque valeur.

Plus d’exemples

#
Une clé manquante
TypeScript
const labels: Record<Course, string> = { html: 'HTML et CSS', python: 'Python' }
// Erreur : Property 'javascript' is missing in type '{ html: string; python: string; }'.

Bonnes pratiques

#
  • Avec des clés issues d’une union de littéraux, Record veille à l’exhaustivité. C’est idéal pour les tables de libellés et de couleurs.
  • Pour des dictionnaires à clés inconnues, envisagez Map, qui gère mieux les ajouts et suppressions fréquents.

Entrées associées

#

Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.