Menu
Coddy logo textTech

Le type 'never'

Fait partie de la section Introduction à TypeScript du Journey JavaScript de Coddy. Leçon 70 sur 73.

Le type never représente des valeurs qui ne surviennent jamais. Cela peut sembler déroutant au début, mais c'est en fait assez logique quand on pense à certains scénarios dans votre code.

Le type never est le plus couramment utilisé pour les fonctions qui ne retournent jamais normalement.

Cela inclut les fonctions qui lèvent toujours une erreur ou contiennent des boucles infinies :

function throwError(message: string): never {
  throw new Error(message);
}

function infiniteLoop(): never {
  while (true) {
    // Cette boucle ne se termine jamais
  }
}

Contrairement à void, qui indique qu'une fonction ne retourne pas de valeur significative, never indique que la fonction n'atteint jamais son point final. L'exécution s'arrête soit à cause d'une erreur levée, soit elle continue indéfiniment.

challenge icon

Défi

Facile

Créez une fonction nommée throwError qui illustre le type de retour never en levant systématiquement une erreur et en ne retournant jamais de valeur normalement.

La fonction doit :

  • Prendre un paramètre message de type string
  • Lever une nouvelle Error avec le message fourni
  • Avoir un type de retour explicite never

Créez une deuxième fonction nommée handleOperation qui :

  • Prend deux paramètres : operation de type string et value de type number
  • Retourne value * 2 si l'opération est "double"
  • Retourne value / 2 si l'opération est "half"
  • Appelle throwError avec le message "Invalid operation: [operation]" pour toute autre opération
  • Avoir un type de retour explicite number

Testez vos fonctions avec les opérations suivantes :

  • Appelez handleOperation("double", 5) et affichez le résultat
  • Appelez handleOperation("half", 8) et affichez le résultat
  • Appelez handleOperation("triple", 3) et affichez le résultat (cela lèvera une erreur)

Créez des cas de test supplémentaires :

  • Appelez handleOperation("double", 15) et affichez le résultat
  • Appelez handleOperation("half", 20) et affichez le résultat

Essayez vous-même

// TODO: Écrivez votre code ici
// Créez la fonction throwError avec le type de retour never
// Créez la fonction handleOperation avec le type de retour number

// Testez les fonctions avec des blocs try-catch
try {
    console.log(handleOperation("double", 5));
} catch (error) {
    console.log(`Error: ${(error as Error).message}`);
}

try {
    console.log(handleOperation("half", 8));
} catch (error) {
    console.log(`Error: ${(error as Error).message}`);
}

try {
    console.log(handleOperation("triple", 3));
} catch (error) {
    console.log(`Error: ${(error as Error).message}`);
}

try {
    console.log(handleOperation("double", 15));
} catch (error) {
    console.log(`Error: ${(error as Error).message}`);
}

try {
    console.log(handleOperation("half", 20));
} catch (error) {
    console.log(`Error: ${(error as Error).message}`);
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Introduction à TypeScript

Entraînez-vous par vous-même : Compilateur JavaScript en ligne