0Pricing
Dart Academy · Leçon

Paramètres de type bornés avec extends

Limiter ce qu’un générique peut accepter

Paramètres de type bornés avec extends est une leçon Dart Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Dart Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Dart Academy comprend 4 leçons au total.

Quand n’importe quel type ne suffit pas

Un paramètre de type simple accepte tous les types, mais cela ne suffit pas toujours. Vous pouvez avoir besoin d’appeler une méthode que seuls certains types fournissent. 🔒

La contrainte avec extends

Vous pouvez ajouter une contrainte à l’aide de extends. Elle indique que le paramètre de type doit être un type donné ou l’un de ses sous-types.

class Cage<T extends Animal> {}

Ce que garantit une contrainte

À l’intérieur de la classe, Dart sait désormais que T est au moins un Animal. Vous pouvez donc utiliser sans risque tout membre défini par Animal.

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

Rejeter les types incorrects

Le compilateur bloque tout argument de type qui ne respecte pas la contrainte. Transmettre un type sans rapport produit immédiatement une erreur.

Cage<String>();

Une contrainte numérique

Une contrainte courante est num, le parent de int et de double. Elle permet à un générique d’effectuer des opérations arithmétiques tout en acceptant ces deux types numériques.

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

Contraintes sur les méthodes

Les contraintes s’appliquent aussi aux méthodes génériques, et pas seulement aux classes. Placez extends juste après le nom du paramètre de type dans la méthode.

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

La contrainte par défaut est Object

Lorsque vous omettez une contrainte, la contrainte implicite est Object?. C’est pourquoi un T sans contrainte ne permet d’utiliser que les membres que tout objet possède.

Contrainte Comparable

Pour trier ou comparer, utilisez Comparable comme contrainte. Vous pouvez alors appeler compareTo sur les valeurs dans votre code générique.

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

Les contraintes documentent l’intention

Une contrainte indique également aux lecteurs quels types peuvent être utilisés ici. La signature explique elle-même le contrat attendu par votre code.

Contraintes autoréférentielles

Remarquez que T peut apparaître dans sa propre contrainte, comme dans T extends Comparable de T. Ce modèle lie un type aux opérations qui s’appliquent à lui-même.

Gardez des contraintes minimales

Utilisez la contrainte la moins restrictive qui fonctionne. Des contraintes excessives excluent des types valides, tandis qu’une absence totale de contrainte rend certaines méthodes utiles inaccessibles.

Vérification rapide

Que vous permet une contrainte à l’intérieur de la classe ?

Récapitulatif

Vous avez utilisé extends pour imposer une contrainte à un paramètre de type, ce qui donne accès aux méthodes du type contraint et rejette les types sans rapport. Gardez les contraintes aussi souples que nécessaire. ✅

Questions Fréquemment Posées

La leçon « Paramètres de type bornés avec extends » est-elle gratuite ?

Oui — le texte complet de « Paramètres de type bornés avec extends » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Dart Academy, passe à CoddyKit PRO. Le cours Dart Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Paramètres de type bornés avec extends » ?

Limiter ce qu’un générique peut accepter Tu pratiques Dart Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Dart Academy ?

Aucune expérience préalable n'est requise. Dart Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « Paramètres de type bornés avec extends » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Dart Academy ?

Oui. Chaque leçon Dart Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Pourquoi les génériques surpassent dynamic
  2. Classes et méthodes génériques
  3. Paramètres de type bornés avec extends
  4. Collections génériques en pratique
← Retour à Dart Academy