Tipos de extensión para wrappers sin coste
Envolver un tipo sin sobrecoste en tiempo de ejecución.
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 interchangeableOculte 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 exposedO 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); // 10Cero 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 compileExtensiones 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. 🏁
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
- Escribir su primera extensión
- Extensiones sobre genéricos
- Miembros de extensión estáticos y conflictos
- Tipos de extensión para wrappers sin coste