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 inT
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.