Dart Academy · Lección

Tipos de extensión para wrappers sin coste

Envolver un tipo sin sobrecoste en tiempo de ejecución.

Lección 4 de 413 pasos

Tipos de extensión para wrappers sin coste es una lección gratuita de Dart Academy en CoddyKit. Esta es la lección 4 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 herramienta diferente

Un extension type es una característica más reciente: envuelve un tipo existente para proporcionarle una interfaz nueva, sin coste en tiempo de ejecución.

Envuelva sin encapsular

A diferencia de una clase contenedora real, un extension type no añade ningún objeto durante la ejecución. En tiempo de ejecución es simplemente el valor subyacente.

extension type UserId(int id) {}

El tipo de representación

El valor entre paréntesis es el tipo de representación. Aquí, un UserId es en realidad simplemente un int con un nombre más seguro.

extension type Meters(double value) {}

Créelo fácilmente

Construya un extension type como si llamara a un constructor, pasando directamente el valor subyacente.

var id = UserId(42);
var d = Meters(3.5);

Añada métodos seguros

Dentro del cuerpo puede añadir métodos y getters que operen sobre el valor envuelto, dándole un significado real.

extension type Meters(double value) {
  Meters plus(Meters o) => Meters(value + o.value);
}

Más sólido que typedef

Un typedef es solo un alias, pero un extension type es un tipo distinto. No puede mezclar por error un UserId con un int normal.

int raw = 42;
// UserId u = raw; // error: not interchangeable

Oculte la API subyacente

De forma predeterminada, un extension type oculta los miembros del tipo envuelto, por lo que solo se pueden llamar los métodos que exponga.

var m = Meters(2.0);
// m.toStringAsFixed(2); // not available unless exposed

O implemente para exponerlos

Añada implements para reenviar los miembros subyacentes, de modo que quienes realizan las llamadas puedan usar tanto su API como el tipo base.

extension type Score(int value) implements int {}
print(Score(9) + 1); // 10

Cero sobrecoste en tiempo de ejecución

Como no se crea ningún objeto real, los extension types no cuestan nada durante la ejecución. Obtiene seguridad de tipos de forma gratuita.

Ideales para identificadores de dominio

Son especialmente útiles para identificadores con tipo, como UserId o Email, ya que evitan pasar el int equivocado al lugar equivocado.

void load(UserId id) {}
load(UserId(7)); // load(7) would not compile

Extensiones frente a extension types

Una extensión añade métodos a un tipo que todos comparten; un extension type crea un tipo nuevo y distinto alrededor de un valor.

Comprobación rápida

Última comprobación: ¿qué hace especiales a los extension types?

Resumen: extension types

Ha conocido los extension types: wrappers distintos y sin coste sobre un tipo de representación, ideales para identificadores y unidades seguras sin sobrecoste en tiempo de ejecució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 «Tipos de extensión para wrappers sin coste» es gratis?

Sí — el texto completo de «Tipos de extensión para wrappers sin coste» 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 «Tipos de extensión para wrappers sin coste»?

Envolver un tipo sin sobrecoste en tiempo de ejecución. 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 4 de 4.

¿Cuánto tiempo toma la lección «Tipos de extensión para wrappers sin coste»?

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. Escribir su primera extensión
  2. Extensiones sobre genéricos
  3. Miembros de extensión estáticos y conflictos
  4. Tipos de extensión para wrappers sin coste
← Volver a Dart Academy