Signature d’index

Une description des objets à clés arbitraires et à valeurs d’un seul type.

Sur cette page

Exemple

#
TypeScript
interface Scores {
  [student: string]: number
}

const scores: Scores = { léa: 92, lucas: 78 }
scores.emma = 85

const best = Object.entries(scores).sort(([, a], [, b]) => b - a)[0]
console.log(best)
Résultat
['léa', 92]

Définition et utilisation

#

La signature d’index [key: string]: number décrit un objet dont vous ne connaissez pas les noms de champs à l’avance, mais dont vous connaissez le type des valeurs. C’est à cela que ressemblent les dictionnaires : scores d’élèves, compteurs d’occurrences, traductions.

La clé peut être de type string, number ou symbol. Les champs déclarés à côté de la signature doivent avoir un type compatible avec elle, car ils sont eux aussi accessibles par n’importe quelle clé.

Avec l’option noUncheckedIndexedAccess activée, la lecture via une signature d’index renvoie type | undefined, ce qui oblige à gérer les clés manquantes. Pour les dictionnaires à clés connues, Record<K, V> est plus pratique.

Syntaxe

#
Syntaxe
interface Dictionary {
  [key: string]: type
}

Bonnes pratiques

#
  • Quand vous connaissez la liste des clés, utilisez Record<"html" | "css", number> plutôt qu’une signature générale.
  • Activez noUncheckedIndexedAccess, pour que le compilateur vous rappelle les clés qui pourraient ne pas exister.

Entrées associées

#

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