TypeScript'da qanday o'rnatilgan Utility Types mavjud?
MiddleTypeScript #typescript #utility-types
Savol
TypeScript'da qanday foydali o'rnatilgan Utility Types mavjud va ularni qachon qo'llash kerak?
Qisqa javob
Utility Types — mavjud tiplarni o'zgartiradigan o'rnatilgan generic tiplar: maydonlarni ixtiyoriy qiladi, kichik to'plamni tanlaydi, kalitlarni o'zgartiradi va h.k. Bu interfeyslarni qo'lda takrorlamaslik imkonini beradi.
Batafsil javob
Eng ko'p ishlatiladiganlari:
Partial<T>— barcha maydonlar ixtiyoriy bo'lib qoladi. Yangilash (PATCH) obyektlari uchun qulay.Required<T>— teskarisi: barcha maydonlar majburiy bo'ladi.Pick<T, K>— faqat ko'rsatilganKmaydonlarini qoldiradi.Omit<T, K>— ko'rsatilgan maydonlarni chiqarib tashlaydi.Record<K, V>— kalitlariKva qiymatlariVbo'lgan lug'at-obyekt.Readonly<T>— maydonlarni qayta tayinlashni taqiqlaydi.ReturnType<F>— funksiyaning qaytariladigan qiymati tipini chiqarib oladi.
Misol
interface User {
id: number
name: string
email: string
password: string
}
// Profilni yangilash formasi uchun parol va id kerak emas
type UpdateUserDto = Partial<Omit<User, 'id' | 'password'>>
function updateUser(id: number, dto: UpdateUserDto) { /* ... */ }
updateUser(1, { name: 'Yangi ism' }) // qolgan maydonlar majburiy emas
// Rollar lug'ati
type RolePermissions = Record<'admin' | 'editor' | 'viewer', string[]>
const permissions: RolePermissions = {
admin: ['read', 'write', 'delete'],
editor: ['read', 'write'],
viewer: ['read']
}
Qo'shimcha savollar
Partial<T>ni mapped types orqali o'zingiz qanday amalga oshirasiz?Pick/Omitqiymatlar darajasidagi destrukturizatsiyadan nimasi bilan farq qiladi?- Shartli tiplar (
T extends U ? X : Y) nima?