TypeScript में उपयोगी टाइप्स का लाभ उठाना

TypeScript कई उपयोगी टाइप्स प्रदान करता है जो आपको टाइप्स को गतिशील और व्यावहारिक तरीके से हेरफेर करने की अनुमति देते हैं। चाहे वह प्रॉपर्टीज को वैकल्पिक बनाना हो, अपरिवर्तनीय बनाना हो या किसी टाइप के कुछ फ़ील्ड को फ़िल्टर करना हो, ये उपयोगी टाइप्स आपको अधिक साफ, सुरक्षित और पठनीय कोड लिखने में मदद कर सकते हैं।

इस लेख में, आप TypeScript के कुछ सबसे अधिक इस्तेमाल किए जाने वाले उपयोगी टाइप्स के बारे में जानेंगे, साथ ही ठोस उदाहरणों के साथ यह भी जानेंगे कि उन्हें कैसे और कब उपयोग करना है।

1. Partial<T>

Partial<T> उपयोगी टाइप एक टाइप T की सभी प्रॉपर्टीज को वैकल्पिक प्रॉपर्टीज में बदल देता है। यह विशेष रूप से उपयोगी है जब आप ऐसे ऑब्जेक्ट्स के साथ काम कर रहे हों जहां सभी प्रॉपर्टीज हमेशा आवश्यक नहीं होती हैं।

उदाहरण

मान लीजिए एक User टाइप है जिसमें अनिवार्य प्रॉपर्टीज हैं:

typescript
1type User = {
2 id: number;
3 name: string;
4 email: string;
5};

यदि आप एक ऐसा फ़ंक्शन बनाना चाहते हैं जो एक उपयोगकर्ता को अपडेट करता है, लेकिन जिसे इन प्रॉपर्टीज के केवल एक सबसेट की आवश्यकता है, तो आप Partial<User> का उपयोग कर सकते हैं:

typescript
1function updateUser(user: User, updates: Partial<User>) {
2 return { ...user, ...updates };
3}
4
5// उपयोग
6const user: User = { id: 1, name: 'अलिस', email: 'alice@example.com' };
7const updatedUser = updateUser(user, { name: 'अलीशा' });

Partial<User> के कारण, अब आप सभी अन्य प्रॉपर्टीज को प्रदान किए बिना केवल कुछ प्रॉपर्टीज को अपडेट कर सकते हैं।

2. Readonly<T>

Readonly<T> एक टाइप T की सभी प्रॉपर्टीज को अपरिवर्तनीय बना देता है। इसका मतलब है कि एक बार जब ऑब्जेक्ट बन जाता है, तो आप उसकी प्रॉपर्टीज को संशोधित नहीं कर सकते, जो स्थिर ऑब्जेक्ट्स के लिए आदर्श है।

उदाहरण

typescript
1type Config = {
2 apiEndpoint: string;
3 timeout: number;
4};
5
6const config: Readonly<Config> = {
7 apiEndpoint: 'https://api.example.com',
8 timeout: 5000,
9};
10
11// त्रुटि: 'timeout' को असाइन नहीं किया जा सकता क्योंकि यह एक रीड-ओनली प्रॉपर्टी है
12config.timeout = 3000;

Readonly<Config> का उपयोग करके, आप सुनिश्चित करते हैं कि config पूरे एक्जीक्यूशन के दौरान अपरिवर्तनीय रहता है।

3. Pick<T, K>

Pick<T, K> उपयोगी टाइप एक टाइप T की केवल कुछ चुनी हुई प्रॉपर्टीज का चयन करके एक नया टाइप बनाता है। यह तब उपयोगी होता है जब आप किसी मौजूदा टाइप का एक सबसेट बनाना चाहते हैं।

उदाहरण

typescript
1type User = {
2 id: number;
3 name: string;
4 email: string;
5 address: string;
6};
7
8type UserSummary = Pick<User, 'id' | 'name'>;
9
10const userSummary: UserSummary = {
11 id: 1,
12 name: 'अलिस',
13};
14
15// त्रुटि: 'email' प्रॉपर्टी 'UserSummary' टाइप में मौजूद नहीं है
16userSummary.email = 'alice@example.com';

Pick<User, "id" | "name"> के साथ, आप एक UserSummary टाइप बनाते हैं जिसमें केवल id और name प्रॉपर्टीज शामिल हैं।

4. Omit<T, K>

इसके विपरीत, Omit<T, K> एक टाइप T की कुछ प्रॉपर्टीज को छोड़कर एक नया टाइप बनाता है। यह Pick का विपरीत है।

उदाहरण

typescript
1type UserWithoutAddress = Omit<User, 'address'>;
2
3const userWithoutAddress: UserWithoutAddress = {
4 id: 1,
5 name: 'अलिस',
6 email: 'alice@example.com',
7};
8
9// त्रुटि: 'address' प्रॉपर्टी 'UserWithoutAddress' टाइप में मौजूद नहीं है
10userWithoutAddress.address = '123 मेन स्ट्रीट';

इस उदाहरण में, UserWithoutAddress में User की सभी प्रॉपर्टीज शामिल हैं, सिवाय address के।

5. Record<K, T>

Record<K, T> का उपयोग एक ऐसे ऑब्जेक्ट टाइप को बनाने के लिए किया जाता है जहां कीज़ K एक विशिष्ट टाइप की हैं, और वैल्यूज टाइप T की हैं। यह एसोसिएटिव ऑब्जेक्ट्स बनाने के लिए उपयोगी है, जैसे डिक्शनरी या मैपिंग।

उदाहरण

मान लीजिए आप उपयोगकर्ता भूमिकाओं को एक्सेस अधिकारों से जोड़ना चाहते हैं:

typescript
1type Role = 'admin' | 'user' | 'guest';
2type Permissions = 'read' | 'write' | 'delete';
3
4const rolePermissions: Record<Role, Permissions[]> = {
5 admin: ['read', 'write', 'delete'],
6 user: ['read', 'write'],
7 guest: ['read'],
8};

इस उदाहरण में, Record<Role, Permissions[]> सुनिश्चित करता है कि rolePermissions ऑब्जेक्ट में सभी कीज़ admin, user, और guest शामिल हैं, जिनकी वैल्यूज Permissions[] टाइप की हैं।

6. Exclude<T, U>

Exclude<T, U> एक दूसरे टाइप से कुछ विशिष्ट टाइप्स को छोड़कर एक नया टाइप बनाने की अनुमति देता है। यह एक यूनियन टाइप से विशिष्ट टाइप्स को फ़िल्टर करने के लिए उपयोगी है।

उदाहरण

typescript
1type Status = 'active' | 'inactive' | 'suspended';
2
3type ActiveStatus = Exclude<Status, 'suspended'>;
4
5const status: ActiveStatus = 'active'; // वैध
6const anotherStatus: ActiveStatus = 'suspended'; // त्रुटि

Exclude<Status, "suspended"> का उपयोग करके, आप एक ActiveStatus टाइप बनाते हैं जो "suspended" नहीं हो सकता।

निष्कर्ष

TypeScript के उपयोगी टाइप्स आपको जटिल टाइप्स को संक्षिप्त और पठनीय तरीके से व्यक्त करने की अनुमति देते हैं। Partial, Readonly, Pick, Omit, Record, और Exclude का लाभ उठाकर, आप अपने टाइप्स को गतिशील रूप से हेरफेर कर सकते हैं और अपने कोड को बोझिल बनाए बिना अपने एप्लिकेशन की जरूरतों को पूरा कर सकते हैं।

ये उपयोगी टाइप्स बस शुरुआत हैं: TypeScript कई अन्य उन्नत उपयोगी टाइप्स प्रदान करता है। इन टूल्स का पता लगाने में समय लें, और आपका कोड अधिक रखरखाव योग्य, सुरक्षित और पढ़ने में आसान होगा।


इन टिप्स को लागू करके, आप अपने टाइप्स को अधिक कुशलता से हेरफेर कर सकेंगे और अधिक मजबूत TypeScript कोड लिख सकेंगे। शुभ कोडिंग!

इस लेख को साझा करें


Sébastien Timoner

Sébastien TIMONER

लीड डेवलपर
कस्टम डेवलपमेंट विशेषज्ञ
Aix-en-Provence, France

वेब विकास और तकनीकी टीम प्रबंधन में विशेषज्ञ, मैं प्रभावी डिजिटल समाधानों के निर्माण और अनुकूलन में विशेषज्ञता रखता हूं। React.js, Node.js, TypeScript और Symfony जैसी आधुनिक तकनीकों की गहरी समझ के साथ, मैं offroadLabs में विभिन्न क्षेत्रों की कंपनियों के लिए जटिल SaaS परियोजनाओं की सफलता सुनिश्चित करता हूं, डिजाइन से लेकर प्रोडक्शन तक।

offroadLabs में, मैं तकनीकी विशेषज्ञता और सहयोगात्मक दृष्टिकोण को जोड़ते हुए कस्टम विकास सेवाएं प्रदान करता हूं। चाहे एक नवीन SaaS समाधान बनाना हो, मौजूदा एप्लिकेशन को आधुनिक बनाना हो, या एक टीम के कौशल विकास में सहायता करना हो, मैं प्रत्येक परियोजना की विशिष्ट आवश्यकताओं के अनुरूप मजबूत और प्रभावी समाधान प्रदान करने के लिए प्रतिबद्ध हूं।

मैं ऐक्स-एन-प्रोवेंस के आसपास या पूर्ण रिमोट असाइनमेंट के लिए उपलब्ध हूं।