0Pricing
Dart Academy · Lección

Parámetros de tipo acotados con extends

Restringir lo que puede aceptar un genérico.

Parámetros de tipo acotados con extends es una lección gratuita de Dart Academy en CoddyKit. Esta es la lección 3 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.

Cuando cualquier tipo es demasiado amplio

Un parámetro de tipo sin restricciones acepta cualquier tipo, pero a veces necesita algo más. Puede que quiera llamar a un método que solo ofrecen determinados tipos. 🔒

La restricción con extends

Puede añadir una restricción mediante extends. Esto indica que el parámetro de tipo debe ser un tipo determinado o un subtipo de este.

class Cage<T extends Animal> {}

Qué garantiza una restricción

Dentro de la clase, Dart confía ahora en que T es, como mínimo, un Animal. Por tanto, puede usar de forma segura cualquier miembro que defina Animal.

class Cage<T extends Animal> {
  void feed(T a) => a.eat();
}

Rechazar tipos incorrectos

El compilador bloquea cualquier argumento de tipo que no cumpla la restricción. Pasar un tipo no relacionado genera un error que verá de inmediato.

Cage<String>();

Una restricción numérica

Una restricción habitual es num, el tipo padre de int y double. Permite que un genérico realice operaciones aritméticas y acepte ambos tipos numéricos.

T addOne<T extends num>(T x) => x + 1 as T;

Restricciones en métodos

Las restricciones también funcionan en métodos genéricos, no solo en clases. Coloque extends justo después del nombre del parámetro de tipo en el método.

num biggest<T extends num>(List<T> xs) =>
    xs.reduce((a, b) => a > b ? a : b);

La restricción predeterminada es Object

Si omite la restricción, la implícita es Object?. Por eso, una T sin restricciones solo permite usar los miembros que tienen todos los objetos.

Restricción Comparable

Para ordenar o comparar, establezca la restricción en Comparable. Entonces podrá llamar a compareTo sobre los valores dentro del código genérico.

T max<T extends Comparable<T>>(T a, T b) =>
    a.compareTo(b) >= 0 ? a : b;

Las restricciones documentan la intención

Una restricción también indica a los lectores qué tipos pueden utilizarse aquí. La propia firma explica el contrato que espera su código.

Restricciones autorreferenciales

Observe que T puede aparecer en su propia restricción, como en T extends Comparable of T. Este patrón vincula un tipo con las operaciones que se realizan sobre sí mismo.

Mantenga las restricciones mínimas

Use la restricción menos estricta que siga funcionando. Restringir demasiado excluye tipos válidos, mientras que no usar ninguna deja inaccesibles métodos útiles.

Comprobación rápida

¿Qué permite hacer una restricción dentro de la clase?

Resumen

Ha utilizado extends para restringir un parámetro de tipo, habilitar los métodos del tipo restringido y rechazar tipos no relacionados. Mantenga las restricciones tan flexibles como requiera la tarea. ✅

Preguntas frecuentes

¿La lección «Parámetros de tipo acotados con extends» es gratis?

Sí — el texto completo de «Parámetros de tipo acotados con extends» 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 «Parámetros de tipo acotados con extends»?

Restringir lo que puede aceptar un genérico. 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 3 de 4.

¿Cuánto tiempo toma la lección «Parámetros de tipo acotados con extends»?

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. Por qué los genéricos superan a dynamic
  2. Clases y métodos genéricos
  3. Parámetros de tipo acotados con extends
  4. Colecciones genéricas en la práctica
← Volver a Dart Academy