Erzählen Sie mir von den Utility-Typen in TypeScript.
sobes.tech KI
Antwort von AI
Die Utility-Typen in TypeScript sind eingebaute Typen, die es ermöglichen, bestehende Datentypen in neue Typen umzuwandeln, indem sie verschiedene nützliche Operationen ausführen. Sie helfen, die Flexibilität und Wiederverwendbarkeit von Typen zu erhöhen und reduzieren Redundanz im Code.
Haupt-Utility-Typen:
-
Partial<Type>: Erstellt einen neuen Typ, bei dem alle Eigenschaften von
Typeoptional sind.interface User { id: number; name: string; age: number; } type PartialUser = Partial<User>; // PartialUser ist { id?: number; name?: string; age?: number; } -
Readonly<Type>: Erstellt einen neuen Typ, bei dem alle Eigenschaften von
Typenur lesbar sind.interface Point { x: number; y: number; } type ReadonlyPoint = Readonly<Point>; // ReadonlyPoint ist { readonly x: number; readonly y: number; } -
Pick<Type, Keys>: Erstellt einen Typ, der eine ausgewählte Menge von Eigenschaften
KeysausTypeenthält.interface Product { id: number; name: string; price: number; description: string; } type ProductSummary = Pick<Product, 'id' | 'name' | 'price'>; // ProductSummary ist { id: number; name: string; price: number; } -
Omit<Type, Keys>: Erstellt einen Typ, der eine bestimmte Menge von Eigenschaften
KeysausTypeausschließt.interface Order { id: number; productId: number; quantity: number; timestamp: string; } type OrderDetails = Omit<Order, 'timestamp'>; // OrderDetails ist { id: number; productId: number; quantity: number; } -
Exclude<Type, ExcludedUnion>: Erstellt einen Typ, der alle Elemente von
Typeenthält, die nicht inExcludedUnionenthalten sind. Wird für Union-Typen verwendet.type Colors = 'red' | 'green' | 'blue' | 'yellow'; type PrimaryColors = Exclude<Colors, 'yellow'>; // PrimaryColors ist 'red' | 'green' | 'blue' -
Extract<Type, Union>: Erstellt einen Typ, der nur die Elemente aus
Typeenthält, die auch inUnionenthalten sind. Wird für Union-Typen verwendet.type AllAnimals = 'dog' | 'cat' | 'fish' | 'bird'; type PetAnimals = Extract<AllAnimals, 'dog' | 'cat'>; // PetAnimals ist 'dog' | 'cat' -
NonNullable<Type>: Erstellt einen Typ, der
nullundundefinedausschließt.type MaybeString = string | null | undefined; type NotNullableString = NonNullable<MaybeString>; // NotNullableString ist string -
Record<Keys, Type>: Erstellt einen Objekttyp mit Schlüssel aus
Keysund Werten vom TypType.type CityPopulation = Record<string, number>; // CityPopulation ist { [key: string]: number } const population: CityPopulation = { "Moscow": 12635466, "Saint Petersburg": 5381033, }; -
Parameters<Type>: Gibt ein Tuple der Parameter-Typen der Funktion
Typezurück.function greet(name: string, age: number): string { return `Hello, ${name}! You are ${age}.`; } type GreetParams = Parameters<typeof greet>; // GreetParams ist [name: string, age: number] -
ReturnType<Type>: Gibt den Rückgabetyp der Funktion
Typezurück.function calculateSum(a: number, b: number): number { return a + b; } type SumResult = ReturnType<typeof calculateSum>; // SumResult ist number -
ConstructorParameters<Type>: Gibt ein Tuple oder Array der Parameter des Konstruktors der Klasse
Typezurück.class MyClass { constructor(name: string, id: number) {} } type MyClassParams = ConstructorParameters<typeof MyClass>; // MyClassParams ist [name: string, id: number] -
InstanceType<Type>: Gibt den Instanztyp der Klasse
Typezurück.class AnotherClass { value: string; constructor(v: string) { this.value = v; } } type AnotherClassInstance = InstanceType<typeof AnotherClass>; // AnotherClassInstance ist AnotherClass
Die Verwendung von Utility-Typen macht den Code sicherer, wartbarer und ausdrucksstärker, indem sie eine effiziente Verwaltung komplexer Datentypen ermöglicht.