Dart Academy · Lección

Clases sealed y switch exhaustivo

Cierre una jerarquía que el compilador pueda comprobar

Lección 2 de 413 pasos

Clases sealed y switch exhaustivo es una lección gratuita de Dart Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Dart Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Dart Academy incluye 4 lecciones en total.

Una familia cerrada

Una clase sealed define un conjunto fijo de subtipos. Ningún código fuera de su archivo puede añadir otro, por lo que la familia se conoce por completo.

sealed class Shape {}

Declaración de subtipos

Las subclases de un tipo sealed se encuentran en el mismo archivo. Juntas forman cada variant posible que el compilador debe considerar.

class Circle extends Shape {}
class Square extends Shape {}

No se puede instanciar directamente

Una clase sealed es implícitamente abstracta, por lo que nunca se crea directamente. Solo se puede construir uno de sus subtipos conocidos.

var s = Shape(); // error
var s = Circle(); // ok

Por qué sealed es útil

Como los subtipos son exhaustive, Dart conoce la lista completa. Esto permite que switch compruebe que ha gestionado todos los casos.

switch sobre subtipos

Un switch sobre un valor sealed puede coincidir con cada subtipo mediante un patrón. Cada rama ve el tipo preciso con el que coincidió.

switch (shape) {
  case Circle(): print('round');
  case Square(): print('boxy');
}

Exhaustividad comprobada

Si olvida un subtipo, el compilador informa de un error. Nunca podrá omitir silenciosamente un caso en un switch sealed.

No necesita default

Como todos los casos están cubiertos, no necesita una rama default. Añadirla solo ocultaría futuros casos que faltaran.

switch como expresión

Use switch como expresión para calcular directamente un valor. La exhaustividad sigue aplicándose, por lo que cada rama debe devolver algo.

final name = switch (shape) {
  Circle() => 'circle',
  Square() => 'square',
};

Añadir una variante nueva

Si más adelante añade un subtipo nuevo, todos los switch que no lo contemplen se marcarán en rojo. El compilador le indicará cuáles debe actualizar.

class Triangle extends Shape {}
// existing switches now error

sealed frente a abstract

Una clase abstract permite subtipos externos desconocidos, por lo que los switch no pueden ser exhaustivos. Sealed cierra el conjunto para realizar una comprobación completa.

Ideal para los estados

Los tipos sealed son excelentes para modelar los states de una aplicación, como Loading, Success y Error. Así se garantiza que exista cada rama de la interfaz. ✅

sealed class Result {}
class Loading extends Result {}
class Done extends Result {}

Comprobación rápida

Comprobación rápida de la exhaustividad de sealed.

Resumen

Ha visto que las clases sealed cierran una familia de tipos y hacen que cada switch sea exhaustivo, por lo que los casos omitidos se convierten en errores de compilación. 🎯

Gratis para empezar

Aprende Dart con un tutor de IA — gratis

Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.

Cursos
30
Lecciones
120

Preguntas frecuentes

¿La lección «Clases sealed y switch exhaustivo» es gratis?

Sí — el texto completo de «Clases sealed y switch exhaustivo» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Dart Academy, actualiza a CoddyKit PRO. El curso de Dart Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Clases sealed y switch exhaustivo»?

Cierre una jerarquía que el compilador pueda comprobar Practicas Dart Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Dart Academy?

No se requiere experiencia previa. Dart Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Clases sealed y switch exhaustivo»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Dart Academy?

Sí. Cada lección de Dart Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Campos final e inmutabilidad profunda
  2. Clases sealed y switch exhaustivo
  3. Modificadores base, interface y final
  4. copyWith e igualdad por valor
← Volver a Dart Academy