पाठ 22 / 26
यूटिलिटी टाइप्स एक नज़र में
मौजूदा टाइप को बदलने वाले बिल्ट-इन हेल्पर: Partial, Pick, Omit, Record, Readonly।
Partial और Pick
Partial<T> हर प्रॉपर्टी को वैकल्पिक बनाता है (अपडेट पेलोड के लिए बढ़िया)। Pick<T, K> केवल सूचीबद्ध कीज़ रखता है।
interface User {
id: number;
name: string;
email: string;
}
type UserUpdate = Partial<User>; // all fields optional
type UserPreview = Pick<User, "id" | "name">; // { id; name }Omit और Record
Omit<T, K> सूचीबद्ध कीज़ को छोड़कर बाक़ी सब रखता है। Record<K, V> एक ऑब्जेक्ट टाइप बनाता है जो K की हर की को V टाइप से मैप करता है।
type UserNoEmail = Omit<User, "email">; // { id; name }
type Roles = "admin" | "editor" | "viewer";
type Permissions = Record<Roles, boolean>;
// { admin: boolean; editor: boolean; viewer: boolean }Readonly<T>
Readonly<T>, हर प्रॉपर्टी को readonly बना देता है, मूल टाइप को छुए बिना उसे फ़्रीज़ कर देता है।
type FrozenUser = Readonly<User>;
const u: FrozenUser = { id: 1, name: "Ada", email: "a@x.com" };
u.name = "Bo";
// Error: Cannot assign to 'name' because it is a read-only property.इन्हें मिलाएँ
यूटिलिटी टाइप्स नेस्ट होते हैं: Readonly<Partial<Pick<User, "name" | "email">>>, बिना नया इंटरफ़ेस बनाए ठीक वही आकार बनाता है जो चाहिए।