TypeScriptGénériques et types avancés
Types indexés T[K]
Récupère le type d’un champ depuis un autre type, comme on lirait une propriété d’un objet.
Exemple
#TypeScript
interface Course {
title: string
level: 'easy' | 'hard'
lessons: { title: string; minutes: number }[]
}
type Level = Course['level']
// type Level = "easy" | "hard"
type Lesson = Course['lessons'][number]
// type Lesson = { title: string; minutes: number }
const lesson: Lesson = { title: 'Introduction', minutes: 5 }
const level: Level = 'easy'
console.log(level, lesson.minutes)Résultat
easy 5
Définition et utilisation
#Un type indexé Type["field"] renvoie le type d’un champ précis : pour Student["level"], ce sera number. Vous pouvez aussi fournir une union de clés, ou keyof, pour obtenir une union des types de tous les champs.
Ainsi, les types auxiliaires restent toujours en phase avec le type source. Si vous changez le type d’un champ dans Student, tous les endroits qui utilisent Student["level"] se mettent à jour automatiquement.
Depuis un tableau, vous récupérez le type d’un élément avec Array[number], ce qui, combiné à as const, permet de déduire une union de valeurs à partir d’une liste.
Syntaxe
#Syntaxe
type FieldType = Type["field"]
type Element = Array[number]Bonnes pratiques
#- Déduisez les types auxiliaires à partir des types source avec
T["field"], plutôt que de copier les définitions. - La notation
typeof LIST[number]avecas constdonne une union de toutes les valeurs du tableau.
Entrées associées
#Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.