Défi
Énoncé
Définir le type type Couleur = "rouge" | "vert" | "orange" et une fonction prochaine(c: Couleur): Couleur qui retourne la couleur suivante dans le cycle rouge → vert → orange → rouge. Le compilateur TypeScript doit rejeter tout appel avec une valeur hors de l'union. Afficher les trois transitions successives à partir de "rouge".
Contraintes
- TypeScript ≥ 5.0, mode strict activé (
"strict": true). - Le type
Couleurdoit être une union de littéraux de typestring(pas unenum). - La fonction
prochainedoit être exhaustive : utiliser unswitchou une correspondance complète. Le compilateur doit signaler un oubli si une branche manque (via unnevercheck ouas never). - Pas de bibliothèque externe.
Exemple
En partant de "rouge" et en enchaînant trois transitions, sortie attendue :
rouge → vert
vert → orange
orange → rouge
Le contrôle d'exhaustivité se vérifie en retirant temporairement une branche :
tsc doit alors signaler une erreur, sans quoi le never n'est pas en place.