प्रकार कंस्ट्रक्टर परिभाषित करना
इंटरफ़ेस लुकअप के रूप में प्रकार कंस्ट्रक्टर को एन्कोड करें।
प्रकार कंस्ट्रक्टर परिभाषित करना, CoddyKit पर TypeScript Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह TypeScript Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। TypeScript Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
प्रकार-निर्माताओं का नामकरण
एन्कोडिंग की शुरुआत हर प्रकार-निर्माता को यूआरआई नामक एक विशिष्ट स्ट्रिंग पहचानकर्ता देने से होती है। यूआरआई एक टैग है, जो वहाँ निर्माता का स्थान लेता है जहाँ हम निर्माता को स्वयं पास नहीं कर सकते।
type ArrayURI = "Array";
type OptionURI = "Option";
// Each container gets a unique string tagएक रजिस्ट्री इंटरफ़ेस
हम एकल इंटरफ़ेस रखते हैं, जो हर यूआरआई को दिए गए तर्क A से बनने वाले ठोस प्रकार से जोड़ता है। यही इंटरफ़ेस रजिस्ट्री है। हर कुंजी एक यूआरआई है और हर मान उससे प्राप्त प्रकार है।
interface URItoKind<A> {
Array: Array<A>;
Option: A | null;
}
// URItoKind<number>["Array"] is number[]निर्माता को खोजना
चूँकि रजिस्ट्री की कुंजी यूआरआई है, इसलिए निर्माता का प्रयोग सूचकांकित अभिगम बन जाता है। "संख्या पर लागू ऐरे" प्राप्त करने के लिए आप रजिस्ट्री में सूचकांक लगाते हैं।
type ArrayOfNumber = URItoKind<number>["Array"]; // number[]
type OptionOfString = URItoKind<string>["Option"]; // string | nullURIS का यूनियन
मान्य निर्माता टैगों का समुच्चय रजिस्ट्री की कुंजियाँ ही हैं। keyof URItoKind<unknown> सभी पंजीकृत यूआरआई का यूनियन देता है, जिसे हम URIS नाम देते हैं।
type URIS = keyof URItoKind<unknown>; // "Array" | "Option"घोषणा-विलय से रजिस्ट्री का विस्तार
TypeScript की एक शक्तिशाली सुविधा: एक ही नाम वाले इंटरफ़ेस विलय हो जाते हैं। पुस्तकालयें इसका उपयोग करती हैं, ताकि हर मॉ्यूल मूल परिभाषा में बदलाव किए बिना अपना कंटेनर URItoKind में जोड़ सके।
interface URItoKind<A> {
Tree: { value: A; children: Array<A> };
}
// Now URIS also includes "Tree"मॉड्यूलर कंटेनर
विलय की वजह से एक फ़ाइल में परिभाषित कंटेनर स्वयं को वैश्विक रूप से पंजीकृत कर लेता है। उसे आयात करने वाला कोई भी व्यक्ति सामान्य अमूर्तताओं में उसके यूआरआई का उपयोग कर सकता है। fp-ts ठीक इसी तरह Option, Either, Task और अन्य प्रकार जोड़ता है।
// file a.ts
interface URItoKind<A> { Either: { left: A } | { right: A } }
// file b.ts can now reference the "Either" URIएक फैंटम वाहक
"कौन-सा निर्माता" मान-स्तरीय प्रकार के रूप में इधर-उधर भेजने के लिए, इंस्टेंस अपनी किसी प्रॉपर्टी में, अक्सर एक फैंटम फ़ील्ड के रूप में, अपना यूआरआई रखते हैं। फ़ील्ड में कभी वास्तविक मान नहीं होता; वह केवल प्रकार-प्रणाली के लिए टैग दर्ज करता है।
interface HasURI<F extends URIS> {
readonly _URI: F;
}
// _URI records which constructor an instance is forयूआरआई को तर्क के साथ जोड़ना
निर्माता के प्रयोग के लिए दो चीज़ें चाहिए: यूआरआई F और तर्क प्रकार A। हम इन्हें एक खोज के माध्यम से जोड़ेंगे, ताकि (F, A) रजिस्ट्री के ज़रिए ठोस प्रकार में बदल जाए।
type Apply<F extends URIS, A> = URItoKind<A>[F];
type A = Apply<"Array", number>; // number[]
type B = Apply<"Option", string>; // string | nullनिर्माताओं के बजाय स्ट्रिंग क्यों
हम स्ट्रिंग का उपयोग करते हैं, क्योंकि TypeScript उन्हें शाब्दिक प्रकारों के रूप में रख और तुलना कर सकता है तथा उनसे रजिस्ट्री में सूचकांक लगा सकता है। हम Array निर्माता को प्रकार पैरामीटर के रूप में नहीं रख सकते, लेकिन शाब्दिक "Array" को रखकर उसे खोज सकते हैं।
type Tag = "Array";
type Resolved = URItoKind<boolean>[Tag]; // boolean[]खोज ही मुख्य कदम है
यह सूचकांकित अभिगम, URItoKind<A>[F], एन्कोडिंग का केंद्र है। यह असंभव प्रकार-प्रयोग F<A> को वैध रजिस्ट्री-खोज में बदल देता है। अगला पाठ इसे Kind<F, A> के रूप में औपचारिक बनाएगा।
type Kind<F extends URIS, A> = URItoKind<A>[F];
type X = Kind<"Array", number>; // number[]स्थापना का पुनरावलोकन
अब आपके पास सभी हिस्से हैं: टैग के रूप में यूआरआई, टैग और तर्क को ठोस प्रकार से जोड़ने वाली URItoKind रजिस्ट्री, टैगों का यूनियन URIS और इसके विस्तार के लिए घोषणा-विलय। रजिस्ट्री में सूचकांक लगाना प्रकार-प्रयोग का अनुकरण करता है।
// URItoKind = registry, URIS = valid tags,
// URItoKind<A>[F] = "apply constructor F to A"त्वरित जाँच
रजिस्ट्री एन्कोडिंग की अपनी समझ जाँचें।
पुनरावलोकन
आपने स्ट्रिंग के माध्यम से प्रकार-निर्माताओं को एन्कोड करना सीखा।
- हर निर्माता को एक विशिष्ट यूआरआई टैग मिलता है।
URItoKind<A>टैगों को ठोस प्रकारों से जोड़ता है।URIS,keyofके माध्यम से सभी टैगों का यूनियन है।- घोषणा-विलय से मॉड्यूल नए कंटेनर पंजीकृत कर सकते हैं।
अगला: खोज को हल्के Kind पैटर्न के रूप में पैक करना।
एआई शिक्षक के साथ TypeScript सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 101
- पाठ
- 352
अक्सर पूछे जाने वाले प्रश्न
क्या “प्रकार कंस्ट्रक्टर परिभाषित करना” पाठ निःशुल्क है?
हाँ—“प्रकार कंस्ट्रक्टर परिभाषित करना” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और TypeScript Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। TypeScript Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“प्रकार कंस्ट्रक्टर परिभाषित करना” में मैं क्या सीखूँगा?
इंटरफ़ेस लुकअप के रूप में प्रकार कंस्ट्रक्टर को एन्कोड करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ TypeScript Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या TypeScript Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर TypeScript Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।
“प्रकार कंस्ट्रक्टर परिभाषित करना” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस TypeScript Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर TypeScript Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- TypeScript में HKT समस्या
- प्रकार कंस्ट्रक्टर परिभाषित करना
- हल्का HKT पैटर्न
- जेनेरिक फ़ंक्टर और मैपर