टाइपस्क्रिप्ट मैप किए गए प्रकारों का परिचय
टाइपस्क्रिप्ट में मैप किए गए प्रकार मौजूदा प्रकारों को बदलकर नए प्रकार बनाने का एक तरीका प्रदान करते हैं। वे जटिल प्रकार के संचालन को संभालने और टाइपस्क्रिप्ट अनुप्रयोगों में प्रकार सुरक्षा सुनिश्चित करने के लिए एक शक्तिशाली उपकरण हैं। यह लेख मैप किए गए प्रकारों का परिचय देता है, उनके सिंटैक्स की व्याख्या करता है, और उनके उपयोग को प्रदर्शित करने के लिए उदाहरण प्रदान करता है।
मैप किए गए प्रकार क्या हैं?
मैप किए गए प्रकार मौजूदा प्रकार की प्रत्येक प्रॉपर्टी पर परिवर्तन लागू करके नए प्रकार बनाने की अनुमति देते हैं। इनका उपयोग अक्सर लचीले तरीके से प्रकारों को संशोधित या विस्तारित करने के लिए किया जाता है। मैप किए गए प्रकार का मूल सिंटैक्स है:
type MappedType = {
[K in keyof T]: NewType;
};
इस वाक्यविन्यास में:
T
मूल प्रकार है.K
,T
में प्रत्येक कुंजी को दर्शाता है।NewType
प्रत्येक संपत्ति को निर्दिष्ट नया प्रकार है।
मैप किए गए प्रकारों का मूल उदाहरण
यहां मैप किए गए प्रकार का एक सरल उदाहरण दिया गया है जो किसी दिए गए प्रकार के सभी गुणों को केवल पढ़ने योग्य में परिवर्तित करता है:
type ReadOnly = {
readonly [K in keyof T]: T[K];
};
type User = {
name: string;
age: number;
};
type ReadOnlyUser = ReadOnly;
इस उदाहरण में, ReadOnly
मैप किया गया प्रकार User
प्रकार के सभी गुणों को केवल पढ़ने योग्य में रूपांतरित कर देता है, जिसके परिणामस्वरूप एक नया प्रकार ReadOnlyUser
बनता है, जहां सभी गुण अपरिवर्तनीय होते हैं।
प्रकार परिवर्तन के साथ मैप किए गए प्रकार
मैप किए गए प्रकारों का उपयोग अधिक जटिल तरीकों से प्रकारों को बदलने के लिए भी किया जा सकता है। उदाहरण के लिए, एक मैप किया गया प्रकार जो सभी गुणों को वैकल्पिक बनाता है:
type Partial = {
[K in keyof T]?: T[K];
};
type User = {
name: string;
age: number;
};
type PartialUser = Partial;
इस उदाहरण में, Partial
मैप किया गया प्रकार User
प्रकार के सभी गुणों को वैकल्पिक बनाता है, जिसके परिणामस्वरूप एक नया प्रकार PartialUser
बनता है, जहां प्रत्येक गुण वैकल्पिक होता है।
सशर्त प्रकारों के साथ मैप किए गए प्रकारों का उपयोग करना
मैप किए गए प्रकारों को अधिक परिष्कृत प्रकार संचालन के लिए सशर्त प्रकारों के साथ जोड़ा जा सकता है। उदाहरण के लिए, एक ऐसा प्रकार बनाना जिसमें केवल एक निश्चित प्रकार के गुण शामिल हों:
type OnlyStrings = {
[K in keyof T]: T[K] extends string ? T[K] : never;
};
type User = {
name: string;
age: number;
email: string;
};
type StringProperties = OnlyStrings;
इस उदाहरण में, OnlyStrings
मैप किया गया प्रकार उन गुणों को फ़िल्टर करता है जो string
प्रकार के नहीं हैं, जिसके परिणामस्वरूप एक नया प्रकार StringProperties
बनता है जिसमें केवल User
प्रकार के स्ट्रिंग गुण शामिल होते हैं।
उन्नत मैप किए गए प्रकार
मैप किए गए प्रकारों के लिए उन्नत उपयोग मामलों में ऐसे प्रकार बनाना शामिल है जो विभिन्न स्थितियों के आधार पर मौजूदा प्रकारों को संशोधित करते हैं। उदाहरण के लिए, एक मैप किया गया प्रकार जो प्रत्येक प्रॉपर्टी नाम में एक प्रत्यय जोड़ता है:
type WithSuffix<T, S extends string> = {
[K in keyof T as `${string & K}${S}`]: T[K];
};
type User = {
name: string;
age: number;
};
type UserWithSuffix = WithSuffix<User, "Prop">;
इस उदाहरण में, WithSuffix
मैप किया गया प्रकार User
प्रकार के प्रत्येक गुण नाम में एक प्रत्यय जोड़ता है, जिसके परिणामस्वरूप एक नया प्रकार UserWithSuffix
बनता है, जहां गुण नामों में निर्दिष्ट प्रत्यय होता है।
निष्कर्ष
टाइपस्क्रिप्ट में मैप किए गए प्रकार एक बहुमुखी विशेषता है जो डेवलपर्स को मौजूदा प्रकारों को बदलकर नए प्रकार बनाने में सक्षम बनाता है। मैप किए गए प्रकारों को समझकर और उनका उपयोग करके, डेवलपर्स जटिल प्रकार परिवर्तनों का प्रबंधन कर सकते हैं और अपने टाइपस्क्रिप्ट कोड में अधिक प्रकार की सुरक्षा सुनिश्चित कर सकते हैं। मैप किए गए प्रकार टाइपस्क्रिप्ट अनुप्रयोगों में प्रकार परिभाषाओं को बढ़ाने और अनुकूलित करने के लिए शक्तिशाली क्षमताएँ प्रदान करते हैं।