J'ai lu ceci , mais on ne sait pas quelle serait la différence entre le type 'jamais' et le 'vide'?
Réponses
Trop de publicités? Dans les langues impératives, void
peut être considéré comme un type contenant une seule valeur. De tels langages ne fournissent pas un moyen de construire ou de consommer cette valeur, mais une fonction void
peut être considérée comme renvoyant cette valeur triviale.
En revanche, never
est un type ne contenant aucune valeur, ce qui signifie qu'une fonction avec ce type de retour ne peut jamais retourner normalement. Cela signifie soit lancer une exception, soit échouer.
Pour augmenter la très bonne réponse de Lee, une autre façon de penser est que, dans un programme correctement typé, une valeur never
ne peut pas être observée.
En plus des fonctions qui ne retournent jamais (ou qui jettent toujours des exceptions), vous verrez le type never
lorsqu'un type d'union a été épuisé de tous ses constituants possibles:
// Example assumes --strictNullChecks
function fn(x: number | string) {
if (typeof x === 'number') {
// x: number in this block
} else if (typeof x === 'string') {
// x: string in this block
} else {
// x: never in this block
// this block does not run; the value of x cannot be observed
}
}