Einführung in TypeScript-zugeordnete Typen

Zugeordnete Typen in TypeScript bieten eine Möglichkeit, neue Typen durch Transformation vorhandener Typen zu erstellen. Sie sind ein leistungsstarkes Tool für die Handhabung komplexer Typoperationen und zur Gewährleistung der Typensicherheit in TypeScript-Anwendungen. Dieser Artikel stellt zugeordnete Typen vor, erklärt ihre Syntax und liefert Beispiele zur Demonstration ihrer Verwendung.

Was sind zugeordnete Typen?

Zugeordnete Typen ermöglichen die Erstellung neuer Typen, indem auf jede Eigenschaft eines vorhandenen Typs eine Transformation angewendet wird. Sie werden häufig verwendet, um Typen flexibel zu ändern oder zu erweitern. Die grundlegende Syntax eines zugeordneten Typs lautet:

type MappedType = {
  [K in keyof T]: NewType;
};

In dieser Syntax:

  • T ist der ursprüngliche Typ.
  • K stellt jede Taste in T dar.
  • NewType ist der neue Typ, der jeder Eigenschaft zugewiesen wird.

Einfaches Beispiel für zugeordnete Typen

Dies ist ein einfaches Beispiel für einen zugeordneten Typ, der alle Eigenschaften eines bestimmten Typs in schreibgeschützt umwandelt:

type ReadOnly = {
  readonly [K in keyof T]: T[K];
};

type User = {
  name: string;
  age: number;
};

type ReadOnlyUser = ReadOnly;

In diesem Beispiel wandelt der zugeordnete Typ ReadOnly alle Eigenschaften des Typs User in schreibgeschützte Eigenschaften um, was zu einem neuen Typ ReadOnlyUser führt, bei dem alle Eigenschaften unveränderlich sind.

Zugeordnete Typen mit Typtransformationen

Zugeordnete Typen können auch verwendet werden, um Typen auf komplexere Weise zu transformieren. Beispielsweise ein zugeordneter Typ, der alle Eigenschaften optional macht:

type Partial = {
  [K in keyof T]?: T[K];
};

type User = {
  name: string;
  age: number;
};

type PartialUser = Partial;

In diesem Beispiel macht der zugeordnete Typ Partial alle Eigenschaften des Typs User optional, was zu einem neuen Typ PartialUser führt, bei dem jede Eigenschaft optional ist.

Verwenden zugeordneter Typen mit bedingten Typen

Zugeordnete Typen können mit bedingten Typen kombiniert werden, um komplexere Typoperationen zu ermöglichen. So können Sie beispielsweise einen Typ erstellen, der nur Eigenschaften eines bestimmten Typs enthält:

type OnlyStrings = {
  [K in keyof T]: T[K] extends string ? T[K] : never;
};

type User = {
  name: string;
  age: number;
  email: string;
};

type StringProperties = OnlyStrings;

In diesem Beispiel filtert der zugeordnete Typ OnlyStrings Eigenschaften heraus, die nicht vom Typ string sind. Dadurch entsteht ein neuer Typ StringProperties, der nur String-Eigenschaften vom Typ User enthält.

Erweiterte zugeordnete Typen

Zu den erweiterten Anwendungsfällen für zugeordnete Typen gehört das Erstellen von Typen, die vorhandene Typen basierend auf verschiedenen Bedingungen ändern. Beispielsweise ein zugeordneter Typ, der jedem Eigenschaftsnamen ein Suffix hinzufügt:

type WithSuffix<T, S extends string> = {
  [K in keyof T as `${string & K}${S}`]: T[K];
};

type User = {
  name: string;
  age: number;
};

type UserWithSuffix = WithSuffix<User, "Prop">;

In diesem Beispiel fügt der zugeordnete Typ WithSuffix jedem Eigenschaftsnamen des Typs User ein Suffix hinzu, was zu einem neuen Typ UserWithSuffix führt, bei dem die Eigenschaftsnamen das angegebene Suffix haben.

Abschluss

Zugeordnete Typen in TypeScript sind eine vielseitige Funktion, die es Entwicklern ermöglicht, neue Typen durch Transformation vorhandener Typen zu erstellen. Durch das Verstehen und Verwenden zugeordneter Typen können Entwickler komplexe Typtransformationen verwalten und eine höhere Typsicherheit in ihrem TypeScript-Code gewährleisten. Zugeordnete Typen bieten leistungsstarke Funktionen zum Verbessern und Anpassen von Typdefinitionen in TypeScript-Anwendungen.