पाठ 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">>>, बिना नया इंटरफ़ेस बनाए ठीक वही आकार बनाता है जो चाहिए।