Generics in JavaScript: warum sie wichtig sind und wie man sie als Anfänger verwendet

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einleitung: Warum brauchen Sie Generics in JavaScript?

Jeder JavaScript-Entwickler stößt früher oder später auf die Situation, dass eine Funktion oder Klasse mit verschiedenen Datentypen arbeiten muss. Ohne spezielle Werkzeuge muss man entweder Code duplizieren oder any verwenden, was die Typkontrolle aufhebt. Generics (generische Typen) lösen dieses Problem.

Im Kontext von JavaScript sind Generics besonders relevant bei der Arbeit mit TypeScript oder bei der Verwendung moderner Muster in Node.js. Selbst wenn Sie in reinem JavaScript schreiben, hilft Ihnen das Verständnis des Generics-Konzepts, flexibleren und sichereren Code zu schreiben.

In diesem Artikel behandeln wir:

  • Was Generics sind und warum sie benötigt werden
  • Wie man Generics in Funktionen und Klassen verwendet
  • Praktische Beispiele für Node.js
  • Häufige Anfängerfehler


Was sind Generics in JavaScript?

Generics sind eine Möglichkeit, Komponenten (Funktionen, Klassen, Schnittstellen) zu erstellen, die mit verschiedenen Datentypen arbeiten können, während die Typsicherheit erhalten bleibt. Anstatt eine separate Funktion für Zahlen, eine separate für Zeichenketten und eine separate für Objekte zu schreiben, schreiben Sie eine universelle Funktion.

Stellen Sie sich vor, Sie erstellen eine Box. Eine normale Box kann nur eine Art von Gegenständen aufbewahren. Generics sind eine "intelligente" Box, die sich an das anpasst, was Sie hineinlegen, sich aber merkt, was genau darin ist.

In TypeScript (einer Erweiterung von JavaScript) werden Generics mit spitzen Klammern <> und dem Buchstaben T (für Type) oder anderen Bezeichnern dargestellt:



// Einfachstes Beispiel eines Generics in TypeScriptfunction identity<T>(arg: T): T {    return arg;}

// Die Funktion funktioniert jetzt mit jedem Typconst num = identity<number>(42); // Typ numberconst str = identity<string>("Hallo"); // Typ string


In reinem JavaScript ist diese Syntax nicht verfügbar, aber das Konzept bleibt für das Verständnis der Anwendungsarchitektur nützlich.



Warum braucht man Generics in JavaScript und Node.js?

Betrachten wir drei Hauptgründe, warum es sich lohnt, sich mit Generics zu beschäftigen.



1. Typsicherheit ohne Flexibilitätsverlust

Ohne Generics verwenden Sie oft any, was die Typprüfung deaktiviert:

// Schlecht: Typinformation geht verlorenfunction getFirstElement(arr: any[]): any {    return arr[0];}

const val = getFirstElement([1, 2, 3]);// val hat den Typ any, wir wissen nicht, ob es eine Zahl oder ein String ist

Mit Generics bleibt der Typ erhalten:

// Gut: Typ bleibt erhaltenfunction getFirstElement<T>(arr: T[]): T {    return arr[0];}

const val = getFirstElement([1, 2, 3]); // val: numberconst str = getFirstElement(["a", "b"]); // str: string


2. Reduzierung von Code-Duplizierung

Ohne Generics müssten Sie separate Funktionen für jeden Typ schreiben:

// Ohne Generics – Duplizierungfunction processNumber(num: number): number { /* ... */ }function processString(str: string): string { /* ... */ }function processObject(obj: object): object { /* ... */ }

// Mit Generics – eine Funktionfunction process<T>(data: T): T { /* ... */ }


3. Erstellung wiederverwendbarer Komponenten

In Node.js werden Generics häufig verwendet, um universelle Hilfsprogramme, Datenverarbeiter und API-Clients zu erstellen:

// Universeller HTTP-Client mit Genericsasync function fetchData<T>(url: string): Promise<T> {    const response = await fetch(url);    return response.json() as Promise<T>;}

// Verwendunginterface User { id: number; name: string;}

const user = await fetchData<User>('/api/user/1');// user hat automatisch den Typ User


Wie man Generics verwendet: Praktische

Blogs

Buchempfehlungen