TypeScript में प्रकार से फ़ील्ड्स को हटाना: एक सरल मार्गदर्शिका

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

TypeScript में प्रकार से गुण कैसे हटाएँ: कोड को अनावश्यक बोझ से बचाएँ

\n\n

क्या आपने कभी ऐसी स्थिति का सामना किया है जहाँ आपके पास एक बड़ा इंटरफ़ेस या प्रकार है, और आपको एक नया प्रकार बनाने की आवश्यकता है जो लगभग समान हो, लेकिन एक या दो फ़ील्ड के बिना? पूरे कोड की नकल करें? 15 पंक्तियाँ कॉपी करें और एक हटाएँ? इससे भी अधिक सुरुचिपूर्ण तरीका है। आज हम जानेंगे कि TypeScript में प्रकार से गुण कैसे हटाया जाए — यह सबसे लोकप्रिय उपयोगिताओं में से एक है जो दोहराव से बचाती है और कोड को स्वच्छ बनाती है।

\n\n

यह विषय Stack Overflow पर एक वास्तविक हिट है। "Exclude property from type" प्रश्न हज़ारों बार देखा जाता है, क्योंकि देर-सबेर हर डेवलपर को प्रकार से फ़ील्ड हटाने या इंटरफ़ेस से गुण हटाने की आवश्यकता होती है। आइए सरल उदाहरणों से शुरू करके उन्नत तकनीकों तक क्रम से समझें।

\n\n

समस्या: प्रकार से फ़ील्ड्स क्यों हटाएँ?

\n\n

कल्पना करें कि आपके पास एक इंटरफ़ेस User है:

\n\n
interface User {\n  id: number;\n  name: string;\n  email: string;\n  password: string;\n  createdAt: Date;\n}
\n\n

आप एक पंजीकरण फ़ॉर्म बनाना चाहते हैं जहाँ उपयोगकर्ता नाम, ईमेल और पासवर्ड दर्ज करता है। लेकिन id सर्वर पर उत्पन्न होता है, और createdAt स्वचालित रूप से। आपको एक प्रकार NewUser चाहिए जिसमें केवल name, email और password हो। यह कैसे करें?

\n\n

खराब समाधान — शुरू से एक नया इंटरफ़ेस घोषित करना:

\n\n
interface NewUser {\n  name: string;\n  email: string;\n  password: string;\n}
\n\n

यह काम करता है, लेकिन DRY (Don't Repeat Yourself) सिद्धांत का उल्लंघन करता है। यदि हम User में name का प्रकार बदलते हैं, तो NewUser में भी बदलना होगा। यहीं पर प्रकार से गुण हटाना काम आता है।

\n\n

उपयोगिता प्रकार Omit: मुख्य उपकरण

\n\n

TypeScript एक अंतर्निहित उपयोगिता प्रकार Omit<Type, Keys> प्रदान करता है। यह मूल प्रकार से निर्दिष्ट कुंजियों को हटाकर एक नया प्रकार बनाता है। सिंटैक्स सरल है:

\n\n
type NewUser = Omit<User, 'id' | 'createdAt'>;
\n\n

अब NewUser में केवल name, email और password है। यदि हम User में email को Email में बदलते हैं, तो NewUser स्वचालित रूप से इसे अपना लेगा।

\n\n

आइए व्यवहार में जाँच करें:

\n\n
const newUser: NewUser = {\n  name: 'अन्ना',\n  email: 'anna@example.com',\n  password: 'secure123'\n}; // ✅ सब ठीक\n\nconst invalidUser: NewUser = {\n  name: 'अन्ना',\n  email: 'anna@example.com',\n  password: 'secure123',\n  id: 1 // ❌ त्रुटि: id प्रकार NewUser में मौजूद नहीं है\n};
\n\n

ध्यान दें: Omit इंटरफ़ेस और प्रकार दोनों के साथ काम करता है। यह प्रकार से फ़ील्ड हटाने के लिए एक सार्वभौमिक उपकरण है।

\n\n

Omit अंदर से कैसे काम करता है?

\n\n

यह बेहतर ढंग से समझने के लिए कि TypeScript प्रकार से गुण कैसे हटाता है, आइए अंदर देखें। Omit दो अन्य उपयोगिताओं का संयोजन है: Pick और Exclude।

\n\n

यहाँ बताया गया है कि इसे TypeScript की मानक लाइब्रेरी में कैसे परिभाषित किया गया है:

\n\n
type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
\n\n

आइए चरण दर चरण समझें:

\n
    \n
  • keyof T — प्रकार T की सभी कुंजियाँ प्राप्त करता है (उदाहरण: 'id' | 'name' | 'email' | 'password' | 'createdAt')
  • \n
  • Exclude<keyof T, K> — इन कुंजियों से उन्हें हटाता है जो K में निर्दिष्ट हैं (हमें 'name' | 'email' | 'password' मिलता है)
  • \n
  • Pick<T, ...> — T से केवल शेष कुंजियाँ चुनता है
  • \n
\n\n

इस प्रकार, इंटरफ़ेस से गुण हटाना कुंजियों को फ़िल्टर करने तक सीमित हो जाता है। सुरुचिपूर्ण, है ना?

\n\n

Pick: Omit का दूसरा पहलू

\n\n

कभी-कभी हटाने के बजाय चुनना आसान होता है, इसके विपरीत

ब्लॉग

पुस्तक अनुशंसाएँ