पुनरावर्ती प्रकार परिभाषाएँ
ऐसे प्रकार लिखें जो सुरक्षित रूप से स्वयं का संदर्भ दें।
पुनरावर्ती प्रकार परिभाषाएँ, CoddyKit पर TypeScript Academy का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह TypeScript Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। TypeScript Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
रिकर्सिव टाइप क्या है
रिकर्सिव टाइप वह टाइप है जो अपनी परिभाषा में स्वयं का संदर्भ देता है। इससे आप असीमित गहराई वाली डेटा संरचनाओं का वर्णन कर सकते हैं।
type LinkedList<T> = {
value: T;
next: LinkedList<T> | null;
};
// next is the same type again, ending at null.लिंक्ड सूची का टाइप
क्लासिक उदाहरण में हर नोड एक value और किसी दूसरे नोड की ओर संकेत करने वाला next पॉइंटर रखता है, या श्रृंखला समाप्त करने के लिए null रखता है।
type LinkedList<T> = { value: T; next: LinkedList<T> | null };
const list: LinkedList<number> = {
value: 1,
next: { value: 2, next: null }
};
console.log(list.value, list.next?.value);आधार स्थिति महत्वपूर्ण है
हर रिकर्सिव टाइप को एक समापक की आवश्यकता होती है, यहाँ null, ताकि रिकर्शन समाप्त हो सके। इसके बिना टाइप अनंत गहराई तक चला जाता।
type LinkedList<T> = { value: T; next: LinkedList<T> | null };
const single: LinkedList<string> = { value: "only", next: null };
console.log(single.next);लंबी श्रृंखलाएँ बनाना
आप जितनी गहराई चाहें उतनी नेस्टिंग कर सकते हैं; टाइप किसी भी लंबाई की अनुमति देता है क्योंकि next स्वयं एक सूची या null है।
type LinkedList<T> = { value: T; next: LinkedList<T> | null };
const chain: LinkedList<number> = {
value: 10,
next: { value: 20, next: { value: 30, next: null } }
};
console.log(chain.next?.next?.value);लिंक्ड सूची में आगे बढ़ना
कोई फ़ंक्शन next का अनुसरण करते हुए श्रृंखला में आगे बढ़ सकता है, जब तक कि वह null तक न पहुँच जाए। रिकर्सिव टाइप इसे पूरी तरह टाइप-सुरक्षित बनाता है।
type LinkedList<T> = { value: T; next: LinkedList<T> | null };
function toArray<T>(list: LinkedList<T> | null): T[] {
const out: T[] = [];
let cur = list;
while (cur) { out.push(cur.value); cur = cur.next; }
return out;
}
const l: LinkedList<number> = { value: 1, next: { value: 2, next: null } };
console.log(toArray(l));रिकर्सिव टाइप पर रिकर्सिव फ़ंक्शन
रिकर्सिव टाइप, रिकर्सिव फ़ंक्शन के साथ स्वाभाविक रूप से काम करते हैं। यहाँ हम next पर रिकर्शन करके लंबाई निकालते हैं।
type LinkedList<T> = { value: T; next: LinkedList<T> | null };
function length<T>(list: LinkedList<T> | null): number {
return list === null ? 0 : 1 + length(list.next);
}
const l: LinkedList<string> = { value: "a", next: { value: "b", next: null } };
console.log(length(l));सूची के आरंभ में जोड़ना
क्योंकि टाइप एकसमान है, नई सूचियाँ बनाना आसान है: किसी मौजूदा सूची को नए शीर्ष नोड के next के रूप में लपेट दें।
type LinkedList<T> = { value: T; next: LinkedList<T> | null };
function prepend<T>(value: T, list: LinkedList<T> | null): LinkedList<T> {
return { value, next: list };
}
const l = prepend(1, prepend(2, null));
console.log(l.value, l.next?.value);वैकल्पिक और नल-योग्य समापक
आप null से समाप्त कर सकते हैं या next को वैकल्पिक बना सकते हैं। दोनों रिकर्शन समाप्त करते हैं; सूची के अंत को जिस तरह दिखाना चाहते हैं, उसके आधार पर चुनाव करें।
type ListA<T> = { value: T; next: ListA<T> | null };
type ListB<T> = { value: T; next?: ListB<T> };
const a: ListA<number> = { value: 1, next: null };
const b: ListB<number> = { value: 1 };
console.log(a.value, b.value);रिकर्सिव टाइप आलसी होते हैं
TypeScript रिकर्सिव टाइप को उतनी ही दूर तक विस्तृत करता है जितना आप वास्तव में उसका उपयोग करते हैं। परिभाषा स्वयं-संदर्भित हो सकती है, फिर भी अनंत काम नहीं होता।
type LinkedList<T> = { value: T; next: LinkedList<T> | null };
// Using two levels only expands two levels.
const l: LinkedList<number> = { value: 1, next: { value: 2, next: null } };
console.log(l.next?.value);सूची पर मैप करना
रिकर्सिव मैप संरचना को बनाए रखते हुए हर मान को बदलता है और उसी संरचना वाली नई सूची लौटाता है।
type LinkedList<T> = { value: T; next: LinkedList<T> | null };
function mapList<T, U>(list: LinkedList<T> | null, fn: (v: T) => U): LinkedList<U> | null {
if (list === null) return null;
return { value: fn(list.value), next: mapList(list.next, fn) };
}
const l: LinkedList<number> = { value: 1, next: { value: 2, next: null } };
console.log(mapList(l, x => x * 10)?.value);रिकर्सिव टाइप शक्तिशाली क्यों हैं
स्वयं-संदर्भित टाइप आपको मनमाने ढंग से नेस्ट किए गए डेटा, सूचियों, पेड़ों और जेएसओएन का मॉडल बनाने देते हैं, वह भी पूरी टाइप-सुरक्षा के साथ और आपके डिज़ाइन में गहराई की कोई निश्चित सीमा रखे बिना।
type LinkedList<T> = { value: T; next: LinkedList<T> | null };
const l: LinkedList<boolean> = { value: true, next: { value: false, next: null } };
console.log(l.value, l.next?.value);त्वरित जाँच: रिकर्सिव टाइप
यह जाँचिए कि आपको रिकर्सिव टाइप की परिभाषाओं की समझ है या नहीं।
पुनरावलोकन: रिकर्सिव टाइप की परिभाषाएँ
आपने सीखा कि रिकर्सिव टाइप स्वयं का संदर्भ देता है, उसे समाप्त करने के लिए null जैसी आधार स्थिति चाहिए, और सूचियों में आगे बढ़ने, उन्हें मैप करने तथा लिंक्ड सूचियाँ बनाने के लिए यह रिकर्सिव फ़ंक्शन के साथ स्वाभाविक रूप से काम करता है।
type LinkedList<T> = { value: T; next: LinkedList<T> | null };
const l: LinkedList<number> = { value: 1, next: null };
console.log(l.value);एआई शिक्षक के साथ TypeScript सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 101
- पाठ
- 352
अक्सर पूछे जाने वाले प्रश्न
क्या “पुनरावर्ती प्रकार परिभाषाएँ” पाठ निःशुल्क है?
हाँ—“पुनरावर्ती प्रकार परिभाषाएँ” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और TypeScript Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। TypeScript Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“पुनरावर्ती प्रकार परिभाषाएँ” में मैं क्या सीखूँगा?
ऐसे प्रकार लिखें जो सुरक्षित रूप से स्वयं का संदर्भ दें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ TypeScript Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या TypeScript Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर TypeScript Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।
“पुनरावर्ती प्रकार परिभाषाएँ” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस TypeScript Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर TypeScript Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- पुनरावर्ती प्रकार परिभाषाएँ
- ट्री संरचनाओं के प्रकार निर्धारित करना
- JSON मान प्रकार
- पुनरावृत्ति की गहराई और सीमाएँ