TypeScript Academy · पाठ

DeepPartial और DeepReadonly

Partial और Readonly के पुनरावर्ती संस्करण बनाएँ

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

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

गहरे उपयोगिता प्रकार क्यों

अंतर्निहित Partial और Readonly केवल एक स्तर तक लागू होते हैं। नेस्ट किए गए ऑब्जेक्ट के लिए आपको इनके पुनरावर्ती संस्करणों की आवश्यकता होती है।

interface Config {
  db: { host: string; port: number };
  app: { name: string };
}
type Shallow = Partial<Config>;
// Shallow.db is still required — only top level is optional

DeepPartial लागू करना

ऑब्जेक्ट प्रॉपर्टी पर पुनरावर्ती रूप से मैप करें, हर प्रॉपर्टी को वैकल्पिक बनाएँ और यदि प्रॉपर्टी का मान ऑब्जेक्ट हो तो DeepPartial को पुनरावर्ती रूप से लागू करें।

type DeepPartial<T> = T extends object
  ? { [K in keyof T]?: DeepPartial<T[K]> }
  : T;

DeepPartial का प्रयोग

नेस्ट किए गए कॉन्फ़िगरेशन प्रकार पर DeepPartial लागू करें और देखें कि सभी स्तर वैकल्पिक हो जाते हैं।

type PartialConfig = DeepPartial<Config>;
// PartialConfig.db?: { host?: string; port?: number }

const c: PartialConfig = { db: { host: "localhost" } };
// No error — all other fields are optional

DeepReadonly लागू करना

नेस्ट किए गए ऑब्जेक्ट प्रकारों में पुनरावर्ती रूप से जाकर हर गहराई पर प्रत्येक प्रॉपर्टी को readonly बनाएँ।

type DeepReadonly<T> = T extends object
  ? { readonly [K in keyof T]: DeepReadonly<T[K]> }
  : T;

DeepReadonly का प्रयोग

गहराई तक फ़्रीज़ किए गए कॉन्फ़िगरेशन को किसी भी स्तर पर बदला नहीं जा सकता।

type ReadonlyConfig = DeepReadonly<Config>;
const cfg: ReadonlyConfig = { db: { host: "localhost", port: 5432 }, app: { name: "my-app" } };
// cfg.db.port = 3000; // Error: readonly

गहरे प्रकारों में ऐरे सँभालना

ऐरे के लिए विशेष प्रबंधन आवश्यक है — उन्हें साधारण ऑब्जेक्ट मानने के बजाय तत्व प्रकारों पर पुनरावर्ती रूप से मैप करें।

type DeepPartial<T> =
  T extends (infer U)[]
    ? DeepPartial<U>[]
    : T extends object
      ? { [K in keyof T]?: DeepPartial<T[K]> }
      : T;

प्रिमिटिव सँभालना

पुनरावर्तन के आधार-प्रकरण में प्रिमिटिव प्रकारों को ऑब्जेक्ट मैप किए गए प्रकार में लपेटने के बजाय वैसे ही लौटाना चाहिए।

type DeepReadonly<T> =
  T extends string | number | boolean | null | undefined ? T
  : T extends (infer U)[] ? ReadonlyArray<DeepReadonly<U>>
  : { readonly [K in keyof T]: DeepReadonly<T[K]> };

DeepPartial और DeepReadonly को संयोजित करना

सुरक्षित कॉन्फ़िगरेशन पैचिंग के लिए आप इन्हें संयोजित करके गहराई तक आंशिक और केवल-पठन योग्य प्रकार बना सकते हैं।

type SafePatch<T> = DeepReadonly<DeepPartial<T>>;

प्रदर्शन संबंधी विचार

बहुत बड़े ऑब्जेक्ट पर पुनरावर्ती प्रकार TypeScript की प्रकार-जाँच को धीमा कर सकते हैं। प्रदर्शन-संवेदी कोड के लिए गहराई की सीमाओं या विलंबित मूल्यांकन पर विचार करें।

// For very deep schemas, consider using Zod or io-ts
// which provide runtime + compile-time deep typing

वास्तविक उपयोग: React स्थिति पैच

DeepPartial उन स्थिति-पैच फ़ंक्शन के लिए बिल्कुल उपयुक्त है, जो बड़े स्थिति ऑब्जेक्ट का केवल बदला हुआ हिस्सा स्वीकार करते हैं।

function patch<T>(state: T, changes: DeepPartial<T>): T {
  return { ...state, ...changes } as T;
}

पुनरावलोकन: गहरे उपयोगिता प्रकार

DeepPartial और DeepReadonly पुनरावर्ती मैप किए गए प्रकार हैं, जो अपने संशोधक को नेस्ट किए गए ऑब्जेक्ट के प्रत्येक स्तर पर लागू करते हैं। ऐरे को अलग से सँभालें और प्रिमिटिव के लिए आधार-प्रकरण का उपयोग करें।

त्वरित जाँच

DeepPartial के लिए सही पुनरावर्ती आधार-प्रकरण क्या है?

आपने क्या सीखा

आपने पुनरावर्ती मैप किए गए प्रकारों का उपयोग करके DeepPartial और DeepReadonly लागू किए। ऐरे को विशेष प्रकरण के रूप में सँभालें और आधार-प्रकरण में प्रिमिटिव को हमेशा बिना बदलाव लौटाएँ।

शुरुआत निःशुल्क

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. DeepPartial और DeepReadonly
  2. Flatten और UnwrapPromise यूटिलिटी
  3. TupleToUnion और UnionToIntersection
  4. TypeScript प्रकार यूटिलिटी लाइब्रेरी प्रकाशित करना
← TypeScript Academy पर वापस जाएँ