TypeScriptTypes de base

Inférence de type

Le compilateur détermine automatiquement les types sans que vous écriviez d’annotations.

Sur cette page

Exemple

#
TypeScript
const lessons = [
  { title: 'HTML', minutes: 12 },
  { title: 'CSS', minutes: 15 }
]
// type : { title: string; minutes: number }[]

const totalMinutes = lessons.reduce((sum, l) => sum + l.minutes, 0)
// type : number

const titles = lessons.map((l) => l.title.toUpperCase())
// type : string[]

console.log(totalMinutes, titles)
Résultat
27 ['HTML', 'CSS']

Définition et utilisation

#

TypeScript détermine lui-même le type à de nombreux endroits, en observant la valeur. La déclaration let count = 0 donne une variable de type number, et une fonction qui renvoie a + b pour deux nombres a un type de retour déduit number.

Grâce à cela, le code n’est pas surchargé d’annotations. Une bonne pratique consiste à typer les frontières : les paramètres de fonctions, les API publiques, les données venant de l’extérieur, et à laisser le reste à l’inférence.

Vous voyez le type déduit dans l’éditeur en survolant la variable avec le curseur. S’il est différent de ce que vous attendiez, ajoutez une annotation, pour que le compilateur signale l’écart à l’endroit où il apparaît.

Syntaxe

#
Syntaxe
let count = 0
// TypeScript infère : number

Plus d’exemples

#
Quand l’inférence ne suffit pas
TypeScript
const ids = []
// type : any[] (sans strict) ou never[] dans certains contextes

const scores: number[] = []
scores.push(90)
console.log(scores)
Résultat
[90]

Bonnes pratiques

#
  • Donnez un type explicite aux tableaux et objets vides que vous remplissez plus tard.
  • Survolez les variables dans l’éditeur avec le curseur. C’est la façon la plus rapide de voir ce que le compilateur a déduit.

Entrées associées

#

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