Vorbiți despre tipurile utilitare în TypeScript.
sobes.tech AI
Răspuns de la AI
Tipurile utilitare în TypeScript sunt tipuri încorporate care permit transformarea tipurilor de date existente în altele noi, efectuând diverse operații utile. Ele ajută la creșterea flexibilității și reutilizării tipurilor, reducând redundanța codului.
Tipurile utilitare principale:
-
Partial<Type>: Creează un nou tip în care toate proprietățile lui
Typedevin opționale.interface User { id: number; name: string; age: number; } type PartialUser = Partial<User>; // PartialUser va fi { id?: number; name?: string; age?: number; } -
Readonly<Type>: Creează un nou tip în care toate proprietățile lui
Typedevin doar pentru citire.interface Point { x: number; y: number; } type ReadonlyPoint = Readonly<Point>; // ReadonlyPoint va fi { readonly x: number; readonly y: number; } -
Pick<Type, Keys>: Creează un tip selectând un set specific de proprietăți
KeysdinType.interface Product { id: number; name: string; price: number; description: string; } type ProductSummary = Pick<Product, 'id' | 'name' | 'price'>; // ProductSummary va fi { id: number; name: string; price: number; } -
Omit<Type, Keys>: Creează un tip excludând un set specific de proprietăți
KeysdinType.interface Order { id: number; productId: number; quantity: number; timestamp: string; } type OrderDetails = Omit<Order, 'timestamp'>; // OrderDetails va fi { id: number; productId: number; quantity: number; } -
Exclude<Type, ExcludedUnion>: Creează un tip excluzând din
Typeacele elemente care pot fi atribuiteExcludedUnion. Este folosit pentru unioni.type Colors = 'red' | 'green' | 'blue' | 'yellow'; type PrimaryColors = Exclude<Colors, 'yellow'>; // PrimaryColors va fi 'red' | 'green' | 'blue' -
Extract<Type, Union>: Creează un tip selectând din
Typeacele elemente care pot fi atribuiteUnion. Este folosit pentru unioni.type AllAnimals = 'dog' | 'cat' | 'fish' | 'bird'; type PetAnimals = Extract<AllAnimals, 'dog' | 'cat'>; // PetAnimals va fi 'dog' | 'cat' -
NonNullable<Type>: Creează un tip excluzând din
Typevalorilenullșiundefined.type MaybeString = string | null | undefined; type NotNullableString = NonNullable<MaybeString>; // NotNullableString va fi string -
Record<Keys, Type>: Creează un tip de obiect, ale cărui proprietăți au chei din
Keysși valori de tipType.type CityPopulation = Record<string, number>; // CityPopulation va fi { [key: string]: number } const population: CityPopulation = { "Moscova": 12635466, "Sankt Petersburg": 5381033, }; -
Parameters<Type>: Returnează o tuplă (tuple) a tipurilor parametrilor funcției
Type.function greet(name: string, age: number): string { return `Hello, ${name}! You are ${age}.`; } type GreetParams = Parameters<typeof greet>; // GreetParams va fi [name: string, age: number] -
ReturnType<Type>: Returnează tipul valorii returnate de funcția
Type.function calculateSum(a: number, b: number): number { return a + b; } type SumResult = ReturnType<typeof calculateSum>; // SumResult va fi number -
ConstructorParameters<Type>: Returnează o tuplă sau un array a tipurilor parametrilor constructorului clasei
Type.class MyClass { constructor(name: string, id: number) {} } type MyClassParams = ConstructorParameters<typeof MyClass>; // MyClassParams va fi [name: string, id: number] -
InstanceType<Type>: Returnează tipul unei instanțe a clasei
Type.class AnotherClass { value: string; constructor(v: string) { this.value = v; } } type AnotherClassInstance = InstanceType<typeof AnotherClass>; // AnotherClassInstance va fi AnotherClass
Folosirea tipurilor utilitare face codul mai sigur, mai ușor de întreținut și mai expresiv, permițând gestionarea eficientă a tipurilor de date complexe.