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.
Défi
FacileCré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
messagede typestring - Lever une nouvelle
Erroravec le message fourni - Avoir un type de retour explicite
never
Créez une deuxième fonction nommée handleOperation qui :
- Prend deux paramètres :
operationde typestringetvaluede typenumber - Retourne
value * 2si l'opération est"double" - Retourne
value / 2si l'opération est"half" - Appelle
throwErroravec 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}`);
}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
1Premiers pas avec TS
Qu'est-ce que TypeScript ?Pourquoi utiliser TypeScript ?Votre premier code TypeScriptProcessus de compilation et erreursRécapitulatif : Introduction à TS4Travailler avec les fonctions
Typage des paramètres et valeurs de retourTypage des fonctions fléchéesLe type de retour 'void'Paramètres optionnels avec '?'Valeurs par défaut des paramètresTypage des paramètres RestDéfinir des types de fonctionsRécapitulatif : Créer des fonctions typées2Types fondamentaux
Types de base : str, num, booleanLe type 'any' : la porte de sortieLe type 'unknown'Travailler avec 'null' et 'undef'L'inférence de type en actionAnnotations de type explicitesRécapitulatif : Pratique des types fondamentaux5Types : Alias, Unions & Intersections
Alias de types pour les primitifsTypes d'union ('|')Travailler avec les types d'unionTypes littérauxTypes d'intersection ('&')Combiner des alias de typesRécapitulatif : Combinaisons de types avancées3Structure de données : Tableaux et Tuples
Tableaux typésModificateur 'readonly' pour les tableauxQu'est-ce qu'un tuple ?Déclaration et accès aux tuplesDéstructuration de tuplesTuples readonlyTableaux typés multidimensionnelsSpread operator avec les tableauxRécapitulatif : Tableaux et tuples6Typage des objets et interfaces
Annotations de type d'objet en ligneAlias de type pour les objetsIntroduction aux interfacesInterfaces vs Alias de typePropriétés optionnelles et ReadonlyÉtendre les interfaces et les typesAjout de méthodes aux interfacesRécapitulatif : Définir la structure des objetsEntraînez-vous par vous-même : Compilateur JavaScript en ligne