TypeScript
.
À savoir, nous discuterons où et comment les types sont déduits.TypeScript
, il existe plusieurs endroits où l'inférence de type est utilisée pour fournir des informations sur le type en l'absence d'annotation de type explicite.x
est supposé être number
.
Ce type d'inférence a lieu lors de l'initialisation des variables et des membres,
de la définition des valeurs par défaut des paramètres et de la détermination des types de retour de fonction.x
dans l'exemple ci-dessus, nous devons considérer le type de chaque élément de tableau.
Nous avons ici deux choix pour le type du tableau : number
et null
. Le meilleur algorithme de type commun considère
chaque type de candidat et choisit le type compatible avec tous les autres candidats.zoo
être déduits en tant que Animal[]
, mais comme il n'y a pas d'objet strictement
de type Animal
dans le tableau, nous ne faisons aucune déduction sur le type d'élément de tableau.
Pour corriger cela, indiquez explicitement le type quand aucun type n'est un super type de tous les autres candidats :(Rhino | Elephant | Snake)[]
.TypeScript
.
Ceci est connu sous le nom de "typage contextuel". Le typage contextuel se produit lorsque le type d'une expression est impliqué par son emplacement.TypeScript
a utilisé le type de la fonction Window.onmousedown
pour déduire le type
de l'expression de fonction sur le côté droit de l'affectation. Ce faisant, il était capable de déduire le type du paramètre mouseEvent
.
Si cette expression de fonction n'était pas dans une position typée contextuellement, le paramètre mouseEvent
aurait le type any
et aucune erreur n'aurait été émise.Animal
, Rhino
, Elephant
et Snake
.
Parmi ceux-ci, Animal
peuvent être choisis par le meilleur algorithme de type commun.