0Pricing
Dart Academy · Leçon

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(); // ok

Pourquoi 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 error

sealed 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

  1. Champs finaux et immutabilité profonde
  2. Classes sealed et switch exhaustif
  3. Modificateurs base, interface et final
  4. copyWith et égalité par valeur
← Retour à Dart Academy