Sobes.tech
Middle

Was sind Generika?

sobes.tech KI

Antwort von AI

Generics in TypeScript ermöglichen die Erstellung von Komponenten (Funktionen, Klassen, Schnittstellen), die mit verschiedenen Datentypen arbeiten können, während die Typsicherheit erhalten bleibt. Sie erlauben es, flexibleren und wiederverwendbaren Code zu schreiben, ohne die Vorteile der statischen Typisierung zu verlieren. Das einfachste Beispiel ist die Verwendung von Generics in Funktionen, um denselben Typ zurückzugeben, der als Argument übergeben wurde.

// Funktion, die ein Argument beliebigen Typs akzeptiert und zurückgibt
function identity<T>(arg: T): T {
    return arg;
}

// Verwendung eines Generics mit einem spezifischen Typ - string
let outputString = identity<string>("Zeichenkette"); // Der Typ von outputString ist string

// Verwendung eines Generics mit automatischer Typableitung - number
let outputNumber = identity(123); // Der Typ von outputNumber ist number

Generics können auch in Klassen verwendet werden:

// Klasse, die mit Elementen beliebigen Typs arbeitet
class GenericBox<T> {
    value: T;
    constructor(initialValue: T) {
        this.value = initialValue;
    }
}

// Erstellen einer Instanz von GenericBox mit Typ string
let stringBox = new GenericBox<string>("Hallo");
// Erstellen einer Instanz von GenericBox mit Typ boolean
let booleanBox = new GenericBox(true); // TypeScript leitet den Typ ab

Und in Schnittstellen:

// Schnittstelle mit Generics
interface KeyValuePair<K, V> {
    key: K;
    value: V;
}

// Verwendung der Schnittstelle mit spezifischen Typen
let stringNumberPair: KeyValuePair<string, number> = { key: "Alter", value: 30 };

Vorteile der Verwendung von Generics:

  • Wiederverwendbarkeit des Codes: Eine Struktur kann mit verschiedenen Datentypen verwendet werden.
  • Typsicherheit: Der Compiler überprüft die Typen während der Kompilierung und verhindert potenzielle Fehler.
  • Lesbarkeit und Wartbarkeit: Der Code wird verständlicher, da klar ist, mit welchen Typen die Komponente arbeitet.

Generics werden häufig in Bibliotheken und Frameworks verwendet, wie React (zur Typisierung von Komponentenprops), Redux (zur Typisierung des Stores) sowie bei der Arbeit mit Datensammlungen.