Dart Academy · Les

Begrensde typeparameters met extends

Beperken wat een generic mag accepteren

Les 3 van 413 stappen

Begrensde typeparameters met extends is een gratis Dart Academy-les op CoddyKit. Dit is les 3 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Dart Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Dart Academy bevat in totaal 4 lessen.

Wanneer elk type te veel is

Een gewone typeparameter accepteert elk type, maar soms heb je meer nodig. Misschien wil je een methode aanroepen die alleen bepaalde typen aanbieden. 🔒

De beperking met extends

Je kunt met extends een beperking toevoegen. Daarmee geef je aan dat de typeparameter een bepaald type of een subtype daarvan moet zijn.

class Cage<T extends Animal> {}

Wat een beperking garandeert

Binnen de klasse vertrouwt Dart er nu op dat T op zijn minst een Animal is. Je kunt daardoor veilig elk lid gebruiken dat Animal definieert.

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

Ongeldige typen weigeren

De compiler blokkeert elk typeargument dat niet aan de beperking voldoet. Een niet-gerelateerd type doorgeven is een fout die je meteen ziet.

Cage<String>();

Een numerieke beperking

Een veelgebruikte beperking is num, het bovenliggende type van int en double. Zo kan een generic rekenkundige bewerkingen uitvoeren en toch beide getaltypen accepteren.

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

Beperkingen bij methoden

Beperkingen werken ook bij generieke methoden, niet alleen bij klassen. Zet extends in de methode direct achter de naam van de typeparameter.

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

De standaardbeperking is Object

Als je geen beperking opgeeft, is de impliciete beperking Object?. Daarom kun je bij een onbeperkte T alleen leden gebruiken die elk object heeft.

Comparable als beperking

Als je wilt sorteren of vergelijken, gebruik je Comparable als beperking. Daarna kun je binnen je generieke code compareTo op de waarden aanroepen.

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

Beperkingen documenteren de bedoeling

Een beperking vertelt lezers ook welke soorten typen hier thuishoren. De ondertekening zelf legt het contract uit dat je code verwacht.

Zelfverwijzende beperkingen

Let erop dat T in zijn eigen beperking kan voorkomen, zoals in T extends Comparable van T. Dit patroon koppelt een type aan bewerkingen op zichzelf.

Houd beperkingen minimaal

Gebruik de minst beperkende beperking die nog werkt. Te strenge beperkingen sluiten geldige typen uit, terwijl je zonder beperking geen nuttige methoden kunt bereiken.

Korte controle

Wat kun je dankzij een beperking binnen de klasse doen?

Samenvatting

Je hebt extends gebruikt om een typeparameter te beperken. Daardoor kreeg je toegang tot de methoden van het beperkte type en werden niet-gerelateerde typen geweigerd. Houd beperkingen zo ruim als de taak toelaat. ✅

Gratis beginnen

Leer Dart met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
30
Lessen
120

Veelgestelde vragen

Is de les “Begrensde typeparameters met extends” gratis?

Ja — de volledige tekst van “Begrensde typeparameters met extends” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Dart Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Dart Academy bevat in totaal 4 lessen.

Wat leer ik in “Begrensde typeparameters met extends”?

Beperken wat een generic mag accepteren Je oefent met Dart Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Dart Academy te beginnen?

Ervaring vooraf is niet nodig. Dart Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.

Hoe lang duurt de les “Begrensde typeparameters met extends”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Dart Academy?

Ja. Elke les over Dart Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Waarom generics beter zijn dan dynamic
  2. Generieke klassen en methoden
  3. Begrensde typeparameters met extends
  4. Generieke collecties in de praktijk
← Terug naar Dart Academy