Реците ми о типовима корисним у TypeScript-у.
sobes.tech АИ
Одговор од АИ
Типови за корисност у 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>: Креира тип искључујући из
Typeвредностиnullиundefined.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
Користећи помоћне типове чини се да је код безбеднији, лакши за одржавање и изразитији, омогућавајући ефикасно управљање сложеним типовима података.