Aller au contenu principal
U/
Types
typescript

Type union "rouge" | "vert" | "orange"

Définir un type union littéral pour les couleurs d'un feu tricolore et implémenter une fonction qui fait défiler les états dans le bon ordre.

10 minPublié le 20 mai 2026Proposé par Anonyme

Défi

// Lisez attentivement, codez sur votre machine

É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 Couleur doit être une union de littéraux de type string (pas un enum).
  • La fonction prochaine doit être exhaustive : utiliser un switch ou une correspondance complète. Le compilateur doit signaler un oubli si une branche manque (via un never check ou as never).
  • Pas de bibliothèque externe.

Exemple

type Couleur = "rouge" | "vert" | "orange";

function prochaine(c: Couleur): Couleur {
  switch (c) {
    case "rouge":  return "vert";
    case "vert":   return "orange";
    case "orange": return "rouge";
    default:
      const _exhaustif: never = c;
      throw new Error(`Couleur inconnue : ${_exhaustif}`);
  }
}

let c: Couleur = "rouge";
for (let i = 0; i < 3; i++) {
  const suivante = prochaine(c);
  console.log(`${c} → ${suivante}`);
  c = suivante;
}
rouge → vert
vert → orange
orange → rouge
Espace solution

Proposer une solution

Connectez-vous ou créez un compte pour envoyer votre code (aucune exécution côté serveur — on stocke juste le texte pour la communauté).

// À garder en tête
  • D'abord, faire marcher

    On ne cherche pas à optimiser : d'abord, on fait marcher le truc. Optimiser vient ensuite — et ça aussi, ça s'apprend. (Si un défi porte sur l'optimisation, son énoncé le précise.)

  • Pas de mauvaise réponse

    Il n'y a pas de mauvaise réponse à un défi. Le but, c'est de le faire. Ce qui compte, c'est de s'entraîner.

  • Trop dur ? Au suivant

    Un défi te résiste ? N'hésite pas à en prendre un autre. Ils seront encore là demain.