Vertel over de utility types in TypeScript.
sobes.tech AI
Antwoord van AI
TypeScript's utility types zijn ingebouwde types die het mogelijk maken om bestaande datatypes om te zetten in nieuwe types door verschillende nuttige operaties uit te voeren. Ze helpen de flexibiliteit en herbruikbaarheid van types te vergroten, waardoor redundantie in de code wordt verminderd.
Belangrijke utility types:
-
Partial<Type>: Maakt een nieuw type waarbij alle eigenschappen van
Typeoptioneel worden.interface User { id: number; name: string; age: number; } type PartialUser = Partial<User>; // PartialUser zal { id?: number; name?: string; age?: number; } -
Readonly<Type>: Maakt een nieuw type waarbij alle eigenschappen van
Typealleen-lezen zijn.interface Point { x: number; y: number; } type ReadonlyPoint = Readonly<Point>; // ReadonlyPoint zal { readonly x: number; readonly y: number; } -
Pick<Type, Keys>: Creëert een type door een geselecteerde set eigenschappen
KeysuitTypete kiezen.interface Product { id: number; name: string; price: number; description: string; } type ProductSummary = Pick<Product, 'id' | 'name' | 'price'>; // ProductSummary zal { id: number; name: string; price: number; } -
Omit<Type, Keys>: Creëert een type door een geselecteerde set eigenschappen
KeysuitTypeuit te sluiten.interface Order { id: number; productId: number; quantity: number; timestamp: string; } type OrderDetails = Omit<Order, 'timestamp'>; // OrderDetails zal { id: number; productId: number; quantity: number; } -
Exclude<Type, ExcludedUnion>: Creëert een type door uit
Typedie elementen uit te sluiten die kunnen worden toegewezen aanExcludedUnion. Wordt gebruikt voor unie types.type Colors = 'red' | 'green' | 'blue' | 'yellow'; type PrimaryColors = Exclude<Colors, 'yellow'>; // PrimaryColors zal 'red' | 'green' | 'blue' -
Extract<Type, Union>: Creëert een type door uit
Typedie elementen te kiezen die kunnen worden toegewezen aanUnion. Wordt gebruikt voor unie types.type AllAnimals = 'dog' | 'cat' | 'fish' | 'bird'; type PetAnimals = Extract<AllAnimals, 'dog' | 'cat'>; // PetAnimals zal 'dog' | 'cat' -
NonNullable<Type>: Creëert een type dat de waarden
nullenundefineduitTypeuitsluit.type MaybeString = string | null | undefined; type NotNullableString = NonNullable<MaybeString>; // NotNullableString zal string -
Record<Keys, Type>: Creëert een objecttype waarvan de eigenschappen sleutels uit
Keyshebben en waarden van typeType.type CityPopulation = Record<string, number>; // CityPopulation zal { [key: string]: number } const population: CityPopulation = { "Moscow": 12635466, "Saint Petersburg": 5381033, }; -
Parameters<Type>: Geeft een tuple van de types van de parameters van de functie
Type.function greet(name: string, age: number): string { return `Hello, ${name}! You are ${age}.`; } type GreetParams = Parameters<typeof greet>; // GreetParams zal [name: string, age: number] -
ReturnType<Type>: Geeft het type van de returnwaarde van de functie
Type.function calculateSum(a: number, b: number): number { return a + b; } type SumResult = ReturnType<typeof calculateSum>; // SumResult zal number -
ConstructorParameters<Type>: Geeft een tuple of array van de types van de constructorparameters van de klasse
Type.class MyClass { constructor(name: string, id: number) {} } type MyClassParams = ConstructorParameters<typeof MyClass>; // MyClassParams zal [name: string, id: number] -
InstanceType<Type>: Geeft het type van een instantie van de klasse
Type.class AnotherClass { value: string; constructor(v: string) { this.value = v; } } type AnotherClassInstance = InstanceType<typeof AnotherClass>; // AnotherClassInstance zal AnotherClass
Het gebruik van utility types maakt de code veiliger, onderhoudbaarder en expressiever, doordat het effectief beheer van complexe datatypes mogelijk wordt.