Signature d’index
Une description des objets à clés arbitraires et à valeurs d’un seul type.
Exemple
#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)['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
#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
#- Record<Keys, Type>Crée un type d’objet avec des clés données, où chaque valeur a le même type.
- Types d’objetsUne description de la forme d’un objet : quels champs il a et de quel type.
- Types mappésCréent un nouveau type d’objet en transformant chaque clé d’un autre type.
- keyofCrée une union des noms de clés d’un type d’objet donné.
Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.