TypeScript Academy · पाठ

ReadonlyArray और ReadonlyMap

अंतर्निर्मित readonly संग्रह प्रकारों का उपयोग करें।

पाठ 3, कुल 4 में से13 चरण

ReadonlyArray और ReadonlyMap, CoddyKit पर TypeScript Academy का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह TypeScript Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। TypeScript Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

केवल-पठन संग्रह प्रकार

ऐरे के अलावा, TypeScript अपने अंतर्निर्मित संग्रहों के केवल-पठन रूप भी देता है: ReadonlyArray<T>, ReadonlyMap<K, V> और ReadonlySet<T>। इनमें से हर एक अपने एपीआई के केवल गैर-परिवर्तनकारी हिस्से उपलब्ध कराता है।

const arr: ReadonlyArray<number> = [1, 2, 3];
console.log(arr.length, arr.includes(2));

ReadonlyArray का पुनरावलोकन

ReadonlyArray<T> पर आप पुनरावृत्ति, अनुक्रमण और map तथा filter जैसी विधियाँ चला सकते हैं, लेकिन push, pop या अनुक्रमणिका को मान देना संभव नहीं है। यह केवल-पठन परिवार का ऐरे रूप है।

const tags: ReadonlyArray<string> = ['ts', 'js'];
console.log(tags.map((t) => t.toUpperCase()));
// tags.push('css'); // Error

ReadonlyMap

ReadonlyMap<K, V> से आप खोज, पुनरावृत्ति और कुंजियों की जाँच कर सकते हैं, लेकिन इसमें set, delete और clear उपलब्ध नहीं होते। उपयोग करने वाले के दृष्टिकोण से मानचित्र की सामग्री स्थिर रहती है।

const ages: ReadonlyMap<string, number> = new Map([['Ada', 30], ['Sam', 25]]);
console.log(ages.get('Ada'), ages.has('Sam'));
// ages.set('Lee', 40); // Error

ReadonlyMap से पढ़ना

सभी पठन क्रियाएँ बनी रहती हैं: get, has, size, keys, values, entries और पुनरावृत्ति। केवल परिवर्तन करने वाली विधियाँ हटा दी जाती हैं।

const m: ReadonlyMap<string, number> = new Map([['a', 1], ['b', 2]]);
for (const [k, v] of m) {
  console.log(k, v);
}
console.log('size:', m.size);

ReadonlySet

ReadonlySet<T> सदस्यता-जाँच और पुनरावृत्ति का समर्थन करता है, लेकिन add, delete और clear हटा देता है। इसका उपयोग अनुमत मानों के स्थिर समुच्चयों के लिए कीजिए।

const allowed: ReadonlySet<string> = new Set(['read', 'write']);
console.log(allowed.has('read'), allowed.has('delete'));
// allowed.add('admin'); // Error

ReadonlySet पर पुनरावृत्ति

आप ReadonlySet पर पुनरावृत्ति कर सकते हैं और उसका size पढ़ सकते हैं, लेकिन उसकी सामग्री बदल नहीं सकते। इसलिए यह अनुमत-सूचियों और अनुमति-समुच्चयों के लिए आदर्श है।

const perms: ReadonlySet<string> = new Set(['view', 'edit']);
perms.forEach((p) => console.log('perm:', p));
console.log('count:', perms.size);

फ़ंक्शन में केवल-पठन संग्रह भेजना

जिन फ़ंक्शनों को केवल पढ़ना चाहिए, उनमें केवल-पठन संग्रह प्रकार स्वीकार कीजिए। इससे आपका उद्देश्य स्पष्ट होता है और फ़ंक्शन को कॉल करने वाले के स्वामित्व वाले डेटा में बदलाव करने से रोका जाता है।

function describe(set: ReadonlySet<string>): string {
  return 'has ' + set.size + ' items';
}
const s = new Set(['x', 'y']);
console.log(describe(s));

परिवर्तनशील संग्रहों को मान्य किया जा सकता है

सामान्य मैप या सेट को उसके केवल-पठन समकक्ष को दिया जा सकता है, क्योंकि यहाँ क्षमताएँ सीमित की जा रही हैं, बढ़ाई नहीं जा रहीं। फ़ंक्शन बस बदलाव करने का अधिकार छोड़ देता है।

function keys(m: ReadonlyMap<string, number>): string[] {
  return Array.from(m.keys());
}
const real = new Map([['a', 1]]);
console.log(keys(real));

अपरिवर्तनशील संग्रह एपीआई

केवल-पठन संग्रह प्रकार एक अपरिवर्तनशील दृश्य का वर्णन करते हैं। मूल ऑब्जेक्ट किसी अन्य स्थान पर अब भी परिवर्तनशील हो सकता है; केवल-पठन प्रकार बस यह सीमित करता है कि यह संदर्भ क्या कर सकता है।

const backing = new Set<number>([1, 2]);
const view: ReadonlySet<number> = backing;
// view.add(3); // Error through the readonly view
backing.add(3); // but the original can still mutate
console.log(view.size);

सही केवल-पठन प्रकार चुनना

अपने डेटा ढाँचे के अनुसार केवल-पठन प्रकार चुनिए: क्रमबद्ध सूचियों के लिए ReadonlyArray, कुंजी-मान खोज के लिए ReadonlyMap और अद्वितीय सदस्यता के लिए ReadonlySet। हर प्रकार अपने ढाँचे के अनुसार अपरिवर्तनशीलता लागू करता है।

const roles: ReadonlySet<string> = new Set(['admin', 'user']);
const limits: ReadonlyMap<string, number> = new Map([['admin', 100]]);
console.log(roles.has('user'), limits.get('admin'));

अधिक सुरक्षित साझा स्थिति

आंतरिक संग्रहों को केवल-पठन प्रकारों के रूप में उपलब्ध कराने से कॉल करने वाले आपके मॉड्यूल की स्थिति को बिगाड़ नहीं सकते। वे डेटा को स्वतंत्र रूप से देख सकते हैं, लेकिन उसे बदल केवल आपका कोड सकता है।

class Registry {
  private items = new Set<string>();
  add(name: string): void { this.items.add(name); }
  get all(): ReadonlySet<string> { return this.items; }
}
const r = new Registry();
r.add('a');
console.log(r.all.has('a'));

त्वरित जाँच

केवल-पठन संग्रह प्रकारों की अपनी समझ जाँचिए।

पुनरावलोकन: केवल-पठन संग्रह

आपने केवल-पठन संग्रह परिवार सीखा:

  • ReadonlyArray<T>, ReadonlyMap<K, V> और ReadonlySet<T> केवल पठन क्रियाएँ उपलब्ध कराते हैं।
  • परिवर्तन करने वाली विधियाँ (set, add, delete, push) हटा दी जाती हैं।
  • परिवर्तनशील संग्रहों को उनके केवल-पठन समकक्षों को दिया जा सकता है।
  • अधिक सुरक्षित साझा स्थिति के लिए ये पैरामीटर और रिटर्न प्रकार के रूप में बहुत उपयोगी हैं।

अंत में, गहरी अपरिवर्तनशीलता के पैटर्न।

function count(s: ReadonlySet<number>): number {
  return s.size;
}
console.log(count(new Set([1, 2, 3])));
शुरुआत निःशुल्क

एआई शिक्षक के साथ TypeScript सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
101
पाठ
352

अक्सर पूछे जाने वाले प्रश्न

क्या “ReadonlyArray और ReadonlyMap” पाठ निःशुल्क है?

हाँ—“ReadonlyArray और ReadonlyMap” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और TypeScript Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। TypeScript Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“ReadonlyArray और ReadonlyMap” में मैं क्या सीखूँगा?

अंतर्निर्मित readonly संग्रह प्रकारों का उपयोग करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ TypeScript Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या TypeScript Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर TypeScript Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।

“ReadonlyArray और ReadonlyMap” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस TypeScript Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर TypeScript Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. readonly गुण
  2. readonly ऐरे और टपल
  3. ReadonlyArray और ReadonlyMap
  4. गहरी अपरिवर्तनीयता के पैटर्न
← TypeScript Academy पर वापस जाएँ