Dart Academy · Lección

Extensiones sobre genéricos

Extender List, Iterable y parámetros de tipo.

Lección 2 de 413 pasos

Extensiones sobre genéricos 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.

Extender colecciones

La verdadera magia aparece al extender tipos genéricos como List o Iterable. Una sola extensión puede ayudar a todos los tipos de elementos a la vez.

Declare un parámetro de tipo

Coloque un parámetro de tipo después del nombre de la extensión y úselo en la cláusula on. Así, su helper mantiene toda la seguridad de tipos.

extension Firsts<T> on List<T> {
  T? get firstOrNull => isEmpty ? null : this[0];
}

El tipo de elemento se propaga

Como ha escrito List of T, su método devuelve automáticamente el tipo de elemento correcto. Sin conversiones ni sorpresas de tipo dinámico.

List<int> nums = [1, 2, 3];
int? n = nums.firstOrNull; // typed as int?

Extienda Iterable para llegar más lejos

Extender Iterable en lugar de List hace que su helper funcione por igual con listas, conjuntos e iterables perezosos. Mayor alcance, el mismo código.

extension Counts<T> on Iterable<T> {
  int countWhere(bool Function(T) f) => where(f).length;
}

Métodos genéricos internos

Un método de extensión también puede recibir sus propios parámetros genéricos, independientes del tipo que está extendiendo.

extension Mapping<T> on List<T> {
  List<R> mapTo<R>(R Function(T) f) => map(f).toList();
}

La inferencia de tipos le ayuda

Dart normalmente infiere los argumentos de tipo a partir del valor sobre el que realiza la llamada, por lo que los lugares donde llama al método se mantienen breves y limpios.

var first = ["a", "b"].firstOrNull; // String?

Extienda Map con dos tipos

Los mapas necesitan dos parámetros. Escriba Map of K, V para crear helpers que respeten tanto las claves como los valores.

extension MapPick<K, V> on Map<K, V> {
  V? pick(K key) => this[key];
}

Mantenga la seguridad frente a nulos

Devolver T? en lugar de T indica que podría faltar un valor, lo que obliga a quienes realizan las llamadas a tenerlo en cuenta con la seguridad frente a nulos.

extension SafeLast<T> on List<T> {
  T? get lastOrNull => isEmpty ? null : last;
}

Reutilice entre tipos de elementos

Una extensión genérica sirve para cualquier tipo de elemento. El mismo firstOrNull funciona con números, cadenas y sus propias clases.

var who = <User>[].firstOrNull; // User?

Restrinja cuando sea necesario

Si su helper necesita capacidades específicas, añada un límite con extends para permitir únicamente tipos de elementos adecuados.

extension Sums<T extends num> on List<T> {
  num total() => fold(0, (a, b) => a + b);
}

Por qué triunfan las extensiones genéricas

Combinan reutilización y seguridad: escriba un helper una sola vez y se adaptará a cualquier tipo de elemento, conservando el tipo de retorno correcto.

Comprobación rápida

Comprobación rápida sobre cómo mantener la seguridad de tipos en las extensiones.

Resumen: extensiones genéricas

Puede añadir un parámetro de tipo a una extensión, aplicarla a List, Iterable o Map, e incluso limitarla con extends para mantenerla reutilizable y segura. ✅

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 «Extensiones sobre genéricos» es gratis?

Sí — el texto completo de «Extensiones sobre genéricos» 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 «Extensiones sobre genéricos»?

Extender List, Iterable y parámetros de tipo. 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 «Extensiones sobre genéricos»?

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