Extensions sur les génériques
Étendre List, Iterable et les paramètres de type
Extensions sur les génériques est une leçon Dart Academy gratuite sur CoddyKit. Ceci est la leçon 2 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.
Étendre les collections
La véritable magie apparaît lorsque vous étendez des types génériques comme List ou Iterable. Une seule extension peut aider tous les types d’éléments à la fois.
Déclarez un paramètre de type
Placez un paramètre de type après le nom de l’extension, puis utilisez-le dans la clause on. Votre fonction auxiliaire reste ainsi entièrement sûre du point de vue des types.
extension Firsts<T> on List<T> {
T? get firstOrNull => isEmpty ? null : this[0];
}Le type des éléments se propage
Comme vous avez écrit List of T, votre méthode renvoie automatiquement le type d’élément approprié. Aucun transtypage ni comportement dynamique inattendu.
List<int> nums = [1, 2, 3];
int? n = nums.firstOrNull; // typed as int?Étendez Iterable pour une portée plus large
Étendre Iterable plutôt que List permet à votre fonction auxiliaire de fonctionner aussi bien sur les listes que sur les ensembles et les itérables paresseux. Une portée plus large, le même code.
extension Counts<T> on Iterable<T> {
int countWhere(bool Function(T) f) => where(f).length;
}Méthodes génériques internes
Une méthode d’extension peut également accepter ses propres paramètres génériques, indépendamment du type que vous étendez.
extension Mapping<T> on List<T> {
List<R> mapTo<R>(R Function(T) f) => map(f).toList();
}L’inférence de type vous aide
Dart déduit généralement les arguments de type à partir de la valeur sur laquelle vous appelez la méthode, ce qui permet de garder des appels courts et clairs.
var first = ["a", "b"].firstOrNull; // String?Étendre Map avec deux types
Les maps nécessitent deux paramètres. Écrivez Map of K, V pour créer des fonctions auxiliaires qui respectent à la fois les clés et les valeurs.
extension MapPick<K, V> on Map<K, V> {
V? pick(K key) => this[key];
}Restez compatible avec la null-safety
Renvoyer T? plutôt que T indique qu’une valeur peut être absente, ce qui oblige les appelants à gérer honnêtement cette possibilité avec la null-safety.
extension SafeLast<T> on List<T> {
T? get lastOrNull => isEmpty ? null : last;
}Réutilisez le code avec tous les types d’éléments
Une extension générique sert à tous les types d’éléments. Le même firstOrNull fonctionne sur des nombres, des chaînes et vos propres classes.
var who = <User>[].firstOrNull; // User?Ajoutez des contraintes si nécessaire
Si votre fonction auxiliaire nécessite des capacités précises, ajoutez une contrainte avec extends afin de n’autoriser que les types d’éléments appropriés.
extension Sums<T extends num> on List<T> {
num total() => fold(0, (a, b) => a + b);
}Pourquoi les extensions génériques sont avantageuses
Elles combinent réutilisabilité et sécurité : écrivez une fonction auxiliaire une seule fois, puis adaptez-la à n’importe quel type d’élément tout en conservant le type de retour correct.
Vérification rapide
Vérifions rapidement comment conserver la sûreté de typage des extensions.
Récapitulatif : les extensions génériques
Vous pouvez ajouter un paramètre de type à une extension, cibler List, Iterable ou Map, et même ajouter une contrainte avec extends pour rester réutilisable et sûr. ✅
Questions Fréquemment Posées
La leçon « Extensions sur les génériques » est-elle gratuite ?
Oui — le texte complet de « Extensions sur les génériques » 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 « Extensions sur les génériques » ?
Étendre List, Iterable et les paramètres de type 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 2 sur 4.
Combien de temps prend la leçon « Extensions sur les génériques » ?
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
- Écrire votre première extension
- Extensions sur les génériques
- Membres d’extension statiques et conflits
- Types d’extension pour des wrappers sans coût