66 votes

Quelle est la difference entre never et void in tapuscript?

J'ai lu ceci , mais on ne sait pas quelle serait la différence entre le type 'jamais' et le 'vide'?

35voto

Lee Points 63849

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.

31voto

Ryan Cavanaugh Points 17393

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
  }
}
 

26voto

nullaber Points 19

En bref:

void return void , never ne retourne jamais.

7voto

Yahiko Points 132

De même, pour plus de raisons théoriques , avec --strictNullChecks new flag, TypeScript avait besoin d’un nouveau type de fond (puisque null et undefined ne sont plus). Le type never est un type bas et rend le système de types de TypeScript plus cohérent.

3voto

Fuji Goro Points 357

Le type de retour de Promise.reject() est Promise<never> , ce qui signifie "le problème n'est jamais résolu".

Donc, si une fonction retourne Promise<never> , je pense qu'elle ne renverra que des erreurs. D'autre part, Promise<void> pourraient être résolus sans valeur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X