Utility Types — Pick, Omit, Extract, Exclude, NonNullable
Foydalanuvchi ob'ektidan faqat id, ism, email ni qaytarish — parol_hash ni emas. Yoki union turdan faqat string turlarni olish. Pick, Omit, Extract, Exclude — turlardan keraklilarni tanlash yoki chiqarib tashlash.
Pick<T, K> — tanlangan xususiyatlar
Faqat belgilangan kalitlarni oladi:
type Foydalanuvchi = {
id: number;
ism: string;
email: string;
parol_hash: string;
};
type XavfsizFoydalanuvchi = Pick<Foydalanuvchi, "id" | "ism" | "email">;
// { id: number; ism: string; email: string }
function profilQaytarish(u: Foydalanuvchi): Pick<Foydalanuvchi, "id" | "ism"> {
return { id: u.id, ism: u.ism };
}
Omit<T, K> — chiqarib tashlash
Belgilangan kalitlardan boshqa hammasi:
type OmmaviyProfil = Omit<Foydalanuvchi, "parol_hash">;
// { id: number; ism: string; email: string }
type Yaratish = Omit<Foydalanuvchi, "id">; // id kerak emas — DB o'zi beradi
// { ism: string; email: string; parol_hash: string }
Extract<T, U> — mos kelganlarni olish
Union dan faqat U ga tayinlanishi mumkin bo'lgan turlar:
type Aralash = string | number | boolean | null;
type FaqatMatn = Extract<Aralash, string>;
// string
type MatnYokiSon = Extract<Aralash, string | number>;
// string | number
Exclude<T, U> — mos kelganlarni chiqarish
Union dan U ga tayinlanishi mumkin bo'lganlarni chiqarib tashlaydi:
type Aralash = string | number | boolean | null;
type NullSiz = Exclude<Aralash, null>;
// string | number | boolean
type FaqatSon = Exclude<Aralash, string | boolean | null>;
// number
NonNullable<T> — null va undefined chiqarish
type MaybeString = string | null | undefined;
type AniqString = NonNullable<MaybeString>;
// string
Exclude<T, null | undefined> bilan bir xil.
Amaliy — CRUD operatsiyalar
type Mahsulot = {
id: number;
nomi: string;
narxi: number;
yaratilgan: Date;
};
type MahsulotYaratish = Omit<Mahsulot, "id" | "yaratilgan">;
// { nomi: string; narxi: number }
type MahsulotYangilash = Partial<MahsulotYaratish>;
// { nomi?: string; narxi?: number }
type MahsulotKarta = Pick<Mahsulot, "id" | "nomi">;
// { id: number; nomi: string }
Xulosa
Pick<T, "a" | "b"> — faqat a va b
Omit<T, "a" | "b"> — a va b dan boshqasi
Extract<T, U> — T dan U ga mos kelganlar
Exclude<T, U> — T dan U ga mos kelmaganlar
NonNullable<T> — null va undefined chiqarish
// Pattern — CRUD
type Create = Omit<T, "id" | "yaratilgan">;
type Update = Partial<Omit<T, "id">>;
type Card = Pick<T, "id" | "nomi">;
Keyingi dars
52-dars: Utility Types — ReturnType, Parameters, InstanceType, Awaited