प्रकारों के साथ फ्लुएंट इंटरफ़ेस
प्रकारों में संचित स्थिति को ट्रैक करते हुए मेथडों को क्रम से जोड़ें।
प्रकारों के साथ फ्लुएंट इंटरफ़ेस, CoddyKit पर TypeScript Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह TypeScript Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। TypeScript Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
क्या-क्या निर्धारित हुआ, इसका लेखा
एक साधारण निर्माता आपको किसी भी समय build() का आह्वान करने देता है, भले ही आवश्यक गुण अनुपस्थित हों। सामान्य प्रकार पैरामीटर का उपयोग करके प्रकार प्रणाली में संचित स्थिति का लेखा रखकर हम इसे बेहतर बना सकते हैं।
स्थिति का प्रकार पैरामीटर
हम निर्माता को एक सामान्य S देते हैं, जो अब तक दी गई कुंजियों का लेखा रखता है। प्रत्येक विधि के चलने पर हम S को नई कुंजी शामिल करने के लिए विस्तृत करते हैं।
class Builder<S> {
// S is a record of keys set so far, e.g. {} or { url: string }
private data: Record<string, unknown> = {};
}प्रत्येक विधि एक कुंजी जोड़ती है
एक मान-निर्धारक ऐसा नया प्रकारयुक्त निर्माता लौटाता है, जिसके S में अभी जोड़ी गई कुंजी शामिल होती है। चलने के समय मान संग्रहीत होता है और प्रकार उसी के अनुसार विस्तृत हो जाता है।
set<K extends string, V>(key: K, value: V): Builder<S & Record<K, V>> {
this.data[key] = value;
return this as unknown as Builder<S & Record<K, V>>;
}प्रतिच्छेदन युक्ति
व्यंजक S & Record<K, V> पिछली स्थिति और नई कुंजी का प्रतिच्छेद करता है। दो आह्वानों के बाद प्रकार दोनों कुंजियों के बारे में सटीक जानकारी रखता है।
type Empty = {};
type AfterUrl = Empty & Record<"url", string>;
type AfterBoth = AfterUrl & Record<"method", string>;
// AfterBoth = { url: string; method: string }एक ठोस श्रृंखलाबद्ध निर्माता
यहाँ एक अनुरोध निर्माता प्रत्येक आह्वान के दौरान अपनी संचित संरचना को आगे पहुँचाता है। संकलक को हमेशा ठीक-ठीक पता होता है कि कौन-से गुण मौजूद हैं।
class Req<S> {
private d: Record<string, unknown> = {};
url(u: string): Req<S & { url: string }> {
this.d.url = u; return this as any;
}
method(m: string): Req<S & { method: string }> {
this.d.method = m; return this as any;
}
}श्रृंखला बनाते समय प्रकार विस्तृत होता जाता है
श्रृंखला का प्रत्येक आह्वान अधिक विशिष्ट निर्माता प्रकार उत्पन्न करता है। संपादक में परिणाम पर संकेतक रखने पर संचित स्थिति दिखाई देती है।
const partial = new Req<{}>().url("/x");
// type: Req<{ url: string }>
const full = partial.method("POST");
// type: Req<{ url: string; method: string }>स्थिति का लेखा आखिर रखें ही क्यों?
जब प्रकार दी गई कुंजियों का समूह साथ रखता है, तब हम बाद में build() को इस तरह सीमित कर सकते हैं कि वह तभी संकलित हो जब आवश्यक कुंजियाँ मौजूद हों। स्थिति पैरामीटर उस गारंटी की नींव है।
संचित संरचना को पढ़ना
आप संचित संरचना को निकालकर उसका निरीक्षण कर सकते हैं। इससे पुष्टि होती है कि निर्माता का प्रकार ठीक वही दर्शाता है, जिसे विन्यस्त किया गया है।
type StateOf<T> = T extends Req<infer S> ? S : never;
type S1 = StateOf<Req<{ url: string }>>; // { url: string }चलने के समय सब कुछ सरल रहता है
सारी जटिलता प्रकारों में होती है। चलने के समय प्रत्येक मान-निर्धारक केवल किसी वस्तु में एक मान संग्रहीत करता है। ये रूपांतरण (as any) चलने के समय की वस्तु और अधिक समृद्ध संकलन-समय प्रकार के बीच सेतु का काम करते हैं।
const r = new Req<{}>().url("/users").method("GET");
console.log("configured url and method");सामान्य स्थिति एक लेखे के रूप में
S को इस बात के लेखे के रूप में समझिए कि क्या-क्या निर्धारित किया जा चुका है। विधियाँ इसमें प्रविष्टियाँ जोड़ती हैं; निर्माण चरण बाद में इस लेखे को पढ़कर तय कर सकता है कि निर्माण की अनुमति है या नहीं।
लाभ और समझौते
प्रकार-स्तर पर स्थिति का लेखा सटीक विकास-परिवेश प्रतिक्रिया देता है और अधूरे निर्माण को रोकता है, लेकिन इसके लिए कुछ रूपांतरण और अधिक उन्नत सामान्य प्रकारों की आवश्यकता होती है। बहुत से लोगों द्वारा उपयोग किए जाने वाले प्रोग्रामिंग इंटरफ़ेस के लिए यह प्रयास उपयोगी है।
त्वरित जाँच
इस पाठ की त्वरित जाँच।
पुनरावलोकन
एक श्रृंखलाबद्ध प्रकारयुक्त निर्माता सामान्य स्थिति पैरामीटर S साथ रखता है। प्रत्येक मान-निर्धारक S और नई कुंजी का प्रतिच्छेद (S & Record<K, V>) करता है और अधिक विशिष्ट निर्माता लौटाता है। इससे संकलक को विन्यस्त गुणों का सटीक लेखा मिलता है।
एआई शिक्षक के साथ 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 पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- बिल्डर पैटर्न की मूल बातें
- प्रकारों के साथ फ्लुएंट इंटरफ़ेस
- आवश्यक चरण लागू करना
- अपरिवर्तनीय बिल्डर