Разкажете за утилитарните типове в TypeScript.
sobes.tech AI
Отговор от AI
Типовете за помощ в TypeScript са вградени типове, които позволяват преобразуването на съществуващи типове данни в нови типове чрез изпълнение на различни полезни операции. Те помагат за увеличаване на гъвкавостта и повторната употреба на типовете, като намаляват излишъка в кода.
Основни помощни типове:
-
Partial<Type>: Създава нов тип, в който всички свойства на
Typeстават незадължителни.interface User { id: number; name: string; age: number; } type PartialUser = Partial<User>; // PartialUser ще бъде { id?: number; name?: string; age?: number; } -
Readonly<Type>: Създава нов тип, в който всички свойства на
Typeстават само за четене.interface Point { x: number; y: number; } type ReadonlyPoint = Readonly<Point>; // ReadonlyPoint ще бъде { readonly x: number; readonly y: number; } -
Pick<Type, Keys>: Създава тип, като избира зададен набор от свойства
KeysотType.interface Product { id: number; name: string; price: number; description: string; } type ProductSummary = Pick<Product, 'id' | 'name' | 'price'>; // ProductSummary ще бъде { id: number; name: string; price: number; } -
Omit<Type, Keys>: Създава тип, като изключва зададен набор от свойства
KeysотType.interface Order { id: number; productId: number; quantity: number; timestamp: string; } type OrderDetails = Omit<Order, 'timestamp'>; // OrderDetails ще бъде { id: number; productId: number; quantity: number; } -
Exclude<Type, ExcludedUnion>: Създава тип, като изключва от
Typeонези елементи, които могат да бъдат присвоени наExcludedUnion. Използва се за обединения (union types).type Colors = 'red' | 'green' | 'blue' | 'yellow'; type PrimaryColors = Exclude<Colors, 'yellow'>; // PrimaryColors ще бъде 'red' | 'green' | 'blue' -
Extract<Type, Union>: Създава тип, като избира от
Typeонези елементи, които могат да бъдат присвоени наUnion. Използва се за обединения.type AllAnimals = 'dog' | 'cat' | 'fish' | 'bird'; type PetAnimals = Extract<AllAnimals, 'dog' | 'cat'>; // PetAnimals ще бъде 'dog' | 'cat' -
NonNullable<Type>: Създава тип, който изключва стойностите
nullиundefinedотType.type MaybeString = string | null | undefined; type NotNullableString = NonNullable<MaybeString>; // NotNullableString ще бъде string -
Record<Keys, Type>: Създава тип на обект, свойствата на който имат ключове от
Keysи стойности от типType.type CityPopulation = Record<string, number>; // CityPopulation ще бъде { [key: string]: number } const population: CityPopulation = { "Москва": 12635466, "Санкт Петербург": 5381033, }; -
Parameters<Type>: Връща кортеж (tuple) от типовете на параметрите на функция
Type.function greet(name: string, age: number): string { return `Hello, ${name}! You are ${age}.`; } type GreetParams = Parameters<typeof greet>; // GreetParams ще бъде [name: string, age: number] -
ReturnType<Type>: Връща типа на стойността, която функция
Typeвръща.function calculateSum(a: number, b: number): number { return a + b; } type SumResult = ReturnType<typeof calculateSum>; // SumResult ще бъде number -
ConstructorParameters<Type>: Връща кортеж или масив от типовете на параметрите на конструктора на класа
Type.class MyClass { constructor(name: string, id: number) {} } type MyClassParams = ConstructorParameters<typeof MyClass>; // MyClassParams ще бъде [name: string, id: number] -
InstanceType<Type>: Връща типа на инстанция на класа
Type.class AnotherClass { value: string; constructor(v: string) { this.value = v; } } type AnotherClassInstance = InstanceType<typeof AnotherClass>; // AnotherClassInstance ще бъде AnotherClass
Използването на помощни типове прави кода по-безопасен, по-лесен за поддръжка и по-изразителен, като позволява ефективно управление на сложни типове данни.