Documentation

Cookies & confidentialité

Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Vous pouvez modifier vos préférences à tout moment depuis le pied de page.

Conditions

Les conditions vous permettent d'exécuter différentes actions selon qu'une condition est vraie ou fausse. C'est la base de toute logique métier.

Structure de base

La structure conditionnelle en Miel s'écrit avec un ? et un : : la condition, puis la valeur si elle est vraie, puis celle si elle est fausse.

JavaScript
condition ? valeurSiVrai : valeurSiFaux

Cette structure fonctionne comme suit :

  1. La condition est évaluée
  2. Si elle est true, on retourne valeurSiVrai
  3. Sinon, on retourne valeurSiFaux

Bon à savoir

Les espaces autour du ? et du : sont libres, et la condition peut s'écrire sur plusieurs lignes. Quand il n'y a rien à renvoyer dans l'autre cas, écrivez null.

Condition simple

Voici un exemple basique qui affiche un message différent selon le montant d'une commande :

JavaScript
commande.total > 1000
? "Client Premium"
: "Client Standard"

Décortiquons cet exemple :

  • commande.total > 1000 est la condition
  • "Client Premium" est retourné si le total dépasse 1000
  • "Client Standard" est retourné sinon

Autres exemples

JavaScript
// Vérifier si un produit est en stock
produit.stock > 0
? "Disponible"
: "Rupture de stock"

// Calculer une remise conditionnelle
client.fidele === true
? commande.total * 0.9
: commande.total

// Afficher un statut coloré
facture.payee === true
? "✓ Payée"
: "⏳ En attente"

Conditions multiples (en cascade)

Quand vous avez plus de deux cas possibles, enchaînez les ternaires : la valeur qui suit un : peut être une nouvelle condition. Aucune parenthèse n'est nécessaire.

JavaScript
employe.age < 18
? "Mineur"
: employe.age > 65
? "Senior"
: "Adulte"

Dans cet exemple :

  • Si l'âge est inférieur à 18 → "Mineur"
  • Sinon, si l'âge est supérieur à 65 → "Senior"
  • Sinon (entre 18 et 65) → "Adulte"

Plusieurs cas en cascade

Vous pouvez enchaîner autant de cas que nécessaire :

JavaScript
client.score >= 16
? "Très bien"
: client.score >= 14
? "Bien"
: client.score >= 12
? "Assez bien"
: client.score >= 10
? "Passable"
: "Insuffisant"

Attention à l'ordre

Les conditions sont évaluées de haut en bas. Dès qu'une condition est vraie, les suivantes ne sont pas testées. Mettez toujours les conditions les plus spécifiques en premier.

Conditions imbriquées

Vous pouvez imbriquer des conditions les unes dans les autres pour des logiques plus complexes.

JavaScript
client.type === "professionnel"
?
  commande.total > 5000
  ? "Remise 15%"
  : "Remise 10%"
:
  commande.total > 1000
  ? "Remise 5%"
  : "Pas de remise"

Conseil

Les conditions imbriquées peuvent vite devenir difficiles à lire. Pour les cas complexes, pensez à utiliser des variables pour stocker les résultats intermédiaires.

Évaluation paresseuse

Miel utilise l'évaluation paresseuse (lazy evaluation) pour les conditions. Cela signifie que seule la branche choisie est réellement exécutée.

JavaScript
commande.total > 0
? commande.total / commande.quantite
: 0

Dans cet exemple, si le total est 0 ou négatif, la division n'est jamais exécutée. Cela évite une division par zéro potentielle.

Avantage de l'évaluation paresseuse

Grâce à l'évaluation paresseuse, vous pouvez écrire des conditions qui protègent contre les erreurs. La branche non exécutée peut contenir du code qui échouerait, mais cela ne pose pas de problème car elle n'est jamais évaluée.

Exemples pratiques

Calculer les frais de port

JavaScript
commande.total >= 100
? 0
: commande.poids > 5
? 15
: 5

Livraison gratuite au-dessus de 100€, sinon 15€ pour les colis lourds, 5€ sinon.

Afficher un message d'urgence

JavaScript
tache.dateEcheance < today()
? "⚠️ En retard"
: tache.dateEcheance === today()
? "📌 À faire aujourd'hui"
: tache.dateEcheance <= today() + 3
? "🔔 Bientôt"
: "✓ Dans les temps"

Vérifier la validité d'un email

JavaScript
client.email.exists()
? client.email
: "Email non renseigné"

Utilise exists pour vérifier si le champ a une valeur.

Combiner avec des opérateurs logiques

JavaScript
commande.total > 1000 && client.fidele === true
? "Remise VIP : 20%"
: commande.total > 500 || client.fidele === true
? "Remise : 10%"
: "Pas de remise"

Prochaine étape

Pour rendre vos formules plus lisibles, apprenez à utiliser des variables pour stocker des valeurs intermédiaires.