Extensions på generics
Utöka List, Iterable och typparametrar
Extensions på generics är en gratis lektion i Dart Academy på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Dart Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Dart Academy innehåller totalt 4 lektioner.
Utöka samlingar
Den verkliga magin visar sig när du utökar generiska typer som List eller Iterable. En enda extension kan hjälpa alla elementtyper på samma gång.
Deklarera en typparameter
Placera en typparameter efter extensionens namn och använd den sedan i on-satsen. Nu förblir hjälpfunktionen helt typsäker.
extension Firsts<T> on List<T> {
T? get firstOrNull => isEmpty ? null : this[0];
}Elementtypen följer med
Eftersom du skrev List of T returnerar metoden automatiskt rätt elementtyp. Ingen typomvandling och inga överraskningar med dynamic.
List<int> nums = [1, 2, 3];
int? n = nums.firstOrNull; // typed as int?Utöka Iterable för större räckvidd
Om du utökar Iterable i stället för List fungerar hjälpfunktionen på listor, mängder och lata itererbara objekt. Större räckvidd, samma kod.
extension Counts<T> on Iterable<T> {
int countWhere(bool Function(T) f) => where(f).length;
}Generiska metoder inuti
En extension-metod kan också ha egna generiska parametrar, separata från typen som du utökar.
extension Mapping<T> on List<T> {
List<R> mapTo<R>(R Function(T) f) => map(f).toList();
}Typinferens hjälper dig
Dart härleder vanligtvis typargumenten från värdet som du anropar metoden på, så anropsställena förblir korta och rena.
var first = ["a", "b"].firstOrNull; // String?Utöka Map med två typer
Map behöver två parametrar. Skriv Map of K, V så kan du bygga hjälpfunktioner som tar hänsyn till både nycklar och värden.
extension MapPick<K, V> on Map<K, V> {
V? pick(K key) => this[key];
}Behåll null-säkerheten
Om du returnerar T? i stället för T signalerar du att ett värde kan saknas, så att anroparen måste hantera detta under null-säkerhet.
extension SafeLast<T> on List<T> {
T? get lastOrNull => isEmpty ? null : last;
}Återanvänd mellan elementtyper
En generisk extension fungerar för alla elementtyper. Samma firstOrNull fungerar för tal, strängar och dina egna klasser.
var who = <User>[].firstOrNull; // User?Begränsa vid behov
Om hjälpfunktionen behöver särskilda egenskaper lägger du till en begränsning med extends, så att endast lämpliga elementtyper tillåts.
extension Sums<T extends num> on List<T> {
num total() => fold(0, (a, b) => a + b);
}Därför vinner generiska extensions
De kombinerar återanvändning med säkerhet: skriv en hjälpfunktion en gång, så anpassar den sig till alla elementtyper samtidigt som rätt returtyp bevaras.
Snabb kontroll
Snabb kontroll av hur du håller extensions typsäkra.
Sammanfattning: Generiska extensions
Du kan lägga till en typparameter i en extension, rikta den mot List, Iterable eller Map och även begränsa den med extends för att förbli återanvändbar och säker. ✅
Lär dig Dart med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 30
- Lektioner
- 120
Vanliga frågor
Är lektionen ”Extensions på generics” gratis?
Ja – hela texten till ”Extensions på generics” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Dart Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Dart Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Extensions på generics”?
Utöka List, Iterable och typparametrar Ni övar på Dart Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Dart Academy?
Du behöver inga förkunskaper. Utbildningen i Dart Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.
Hur lång tid tar lektionen ”Extensions på generics”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Dart Academy-lektionen?
Ja. Varje Dart Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Skriv din första extension
- Extensions på generics
- Statiska extension-medlemmar och konflikter
- Extension types för wrappers utan kostnad