Classes sealed et switch exhaustif
Fermer une hiérarchie que le compilateur peut vérifier
Classes sealed et switch exhaustif est une leçon Dart Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Dart Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Dart Academy comprend 4 leçons au total.
Une famille fermée
Une classe scellée définit un ensemble fixe de sous-types. Aucun code situé en dehors de son fichier ne peut en ajouter un nouveau : la famille est donc entièrement connue.
sealed class Shape {}Déclarer les sous-types
Les sous-classes d'un type scellé se trouvent dans le même fichier. Ensemble, elles forment toutes les variantes possibles que le compilateur doit prendre en compte.
class Circle extends Shape {}
class Square extends Shape {}Impossible d'instancier directement
Une classe scellée est implicitement abstraite : vous ne pouvez donc jamais en créer une directement. Vous construisez uniquement l'un de ses sous-types connus.
var s = Shape(); // error
var s = Circle(); // okPourquoi sealed est utile
Comme les sous-types sont exhaustifs, Dart connaît la liste complète. L'instruction switch peut ainsi vérifier que vous avez traité chaque cas.
Utiliser switch sur les sous-types
Un switch appliqué à une valeur scellée peut reconnaître chaque sous-type à l'aide d'un motif. Chaque branche voit le type précis auquel elle correspond.
switch (shape) {
case Circle(): print('round');
case Square(): print('boxy');
}Exhaustivité vérifiée
Si vous oubliez un sous-type, le compilateur signale une erreur. Aucun cas ne peut être ignoré silencieusement dans un switch sur un type scellé.
Pas besoin de default
Puisque tous les cas sont couverts, vous n'avez pas besoin d'une branche default. En ajouter une ne ferait que masquer les cas manquants futurs.
switch comme expression
Utilisez switch comme expression pour calculer directement une valeur. L'exhaustivité reste obligatoire : chaque branche doit donc renvoyer quelque chose.
final name = switch (shape) {
Circle() => 'circle',
Square() => 'square',
};Ajouter une nouvelle variante
Ajoutez un nouveau sous-type plus tard et chaque switch qui ne le traite pas se signalera en rouge. Le compilateur vous guide pour mettre chacun d'eux à jour.
class Triangle extends Shape {}
// existing switches now errorsealed et abstract
Une classe abstraite autorise des sous-types externes inconnus, les switch ne peuvent donc pas être exhaustifs. sealed ferme l'ensemble pour permettre une vérification complète.
Idéal pour les états
Les types scellés sont particulièrement adaptés à la modélisation des états d'une application, comme Loading, Success et Error. Chaque branche de l'interface utilisateur est alors garantie d'exister. ✅
sealed class Result {}
class Loading extends Result {}
class Done extends Result {}Vérification rapide
Vérification rapide de l'exhaustivité des types scellés.
Récapitulatif
Vous avez vu que les classes scellées ferment une famille de types et rendent chaque switch exhaustif : les cas manquants deviennent donc des erreurs de compilation. 🎯
Questions Fréquemment Posées
La leçon « Classes sealed et switch exhaustif » est-elle gratuite ?
Oui — le texte complet de « Classes sealed et switch exhaustif » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Dart Academy, passe à CoddyKit PRO. Le cours Dart Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Classes sealed et switch exhaustif » ?
Fermer une hiérarchie que le compilateur peut vérifier Tu pratiques Dart Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Dart Academy ?
Aucune expérience préalable n'est requise. Dart Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Classes sealed et switch exhaustif » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Dart Academy ?
Oui. Chaque leçon Dart Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Champs finaux et immutabilité profonde
- Classes sealed et switch exhaustif
- Modificateurs base, interface et final
- copyWith et égalité par valeur