कॉन्फ़िगरेशन लेयरिंग और डिफ़ॉल्ट
डिफ़ॉल्ट, फ़ाइलों और पर्यावरण अधिलेखनों को मिलाएँ।
कॉन्फ़िगरेशन लेयरिंग और डिफ़ॉल्ट, CoddyKit पर TypeScript Academy का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह TypeScript Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। TypeScript Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
परतों में कॉन्फ़िगरेशन
वास्तविक ऐप कई स्रोतों से config बनाते हैं: अंतर्निहित defaults, एक config फ़ाइल और पर्यावरणीय अधिलेख। बाद की परतें पहले वाली परतों को override करती हैं और इसके लिए प्राथमिकता का एक निश्चित क्रम होता है।
प्राथमिकता का क्रम
एक सामान्य क्रम, सबसे कम से सबसे अधिक प्राथमिकता तक: defaults < file config < पर्यावरणीय चर। पर्यावरणीय अधिलेख प्रभावी होते हैं, क्योंकि वे हर परिनियोजन के अनुसार छोटे बदलावों के लिए उपयुक्त हैं।
परतें परिभाषित करना
हर परत आंशिक config होती है। केवल आधार defaults का पूर्ण होना आवश्यक है; बाकी परतें चुने हुए फ़ील्ड भरती या अधिलेखित करती हैं।
interface Config { port: number; host: string; logLevel: string; }
const defaults: Config = { port: 3000, host: "localhost", logLevel: "info" };आंशिक अधिलेख
फ़ाइल और env परतें Partial<Config> होती हैं, क्योंकि उनमें केवल कुछ कुंजियाँ ही दी जा सकती हैं। उन्हें आंशिक प्रकार देना इस बात को दर्शाता है कि कोई भी फ़ील्ड अनुपस्थित हो सकता है।
const fileConfig: Partial<Config> = { port: 8080 };
const envConfig: Partial<Config> = { logLevel: "debug" };उथला विलय
सपाट config के लिए स्प्रेड-विलय प्राथमिकता को साफ़ तरीके से लागू करता है। बाद के ऑब्जेक्ट पहले की कुंजियों को अधिलेखित करते हैं और अंतिम config बनाते हैं।
const config: Config = { ...defaults, ...fileConfig, ...envConfig };
// { port: 8080, host: "localhost", logLevel: "debug" }क्रम क्यों महत्वपूर्ण है
क्योंकि स्प्रेड में बाद वाला मान प्रभावी होता है, इसलिए सूची में सबसे अंत में दिया गया स्रोत सबसे अधिक प्राथमिकता रखता है। स्प्रेड का क्रम बदलने पर यह भी बदल जाता है कि कौन-सी परत किसे अधिलेखित करती है।
नेस्टेड Config के लिए गहरा विलय आवश्यक है
उथला स्प्रेड पूरे नेस्टेड ऑब्जेक्ट को बदल देता है। यदि config में नेस्टेड खंड हैं, तो आपको ऐसा गहरा विलय चाहिए जो उन्हें एक-दूसरे पर लिखने के बजाय पुनरावर्ती रूप से जोड़े।
interface Config { db: { host: string; port: number }; }
// { ...a, ...b } would replace the entire db object, losing keys.एक प्रकारयुक्त गहरा विलय
पुनरावर्ती विलय दोनों ऑब्जेक्ट में चलता है, नेस्टेड रिकॉर्ड में नीचे तक जाता है और अंतिम मानों को अधिलेखित करता है। परिणाम को प्रकारयुक्त बनाने के लिए पुनरावर्ती प्रकार सहायक आवश्यक होता है।
type DeepPartial<T> = { [K in keyof T]?: DeepPartial<T[K]> };
function deepMerge<T>(base: T, over: DeepPartial<T>): T {
const out: any = { ...base };
for (const k in over) {
const v = (over as any)[k];
out[k] = v && typeof v === "object" ? deepMerge((base as any)[k], v) : v;
}
return out;
}अधिलेख परतों के लिए DeepPartial
अधिलेख परतों का प्रकार DeepPartial<Config> रखा जाता है, ताकि वे नेस्टेड कुंजियों के किसी भी उपसमूह को निर्दिष्ट कर सकें और फिर भी पूरे आकार के विरुद्ध प्रकार-जाँच होती रहे।
const override: DeepPartial<Config> = { db: { port: 5433 } };
// merges into db without dropping db.hostसत्यापन के साथ संयोजन
पहले विलय कीजिए, फिर स्कीमा से परिणाम का सत्यापन कीजिए। इस तरह अंतिम, पूरी तरह प्राप्त config ही शुद्धता के लिए जाँचा जाता है।
// const merged = deepMerge(defaults, override);
// const config = ConfigSchema.parse(merged);परतें बनाने की सर्वोत्तम प्रक्रियाएँ
defaults को पूर्ण और सुरक्षित रखिए, फ़ाइलों में पर्यावरण-विशिष्ट सेटिंग व्यक्त कीजिए और प्राथमिकता-श्रृंखला में सबसे ऊपर गोपनीय जानकारी तथा हर परिनियोजन के अधिलेख के लिए env चर रखिए।
त्वरित जाँच
इस पाठ की त्वरित जाँच।
पुनरावलोकन
परतदार config defaults, file config और env अधिलेखों को प्राथमिकता के क्रम में मिलाता है (defaults < file < env)। सपाट config में स्प्रेड का उपयोग होता है; नेस्टेड config के लिए DeepPartial<Config> से प्रकारयुक्त गहरा विलय आवश्यक है। मिले हुए परिणाम का सत्यापन कीजिए।
एआई शिक्षक के साथ TypeScript सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 101
- पाठ
- 352
अक्सर पूछे जाने वाले प्रश्न
क्या “कॉन्फ़िगरेशन लेयरिंग और डिफ़ॉल्ट” पाठ निःशुल्क है?
हाँ—“कॉन्फ़िगरेशन लेयरिंग और डिफ़ॉल्ट” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और TypeScript Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। TypeScript Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“कॉन्फ़िगरेशन लेयरिंग और डिफ़ॉल्ट” में मैं क्या सीखूँगा?
डिफ़ॉल्ट, फ़ाइलों और पर्यावरण अधिलेखनों को मिलाएँ। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ TypeScript Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या TypeScript Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर TypeScript Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।
“कॉन्फ़िगरेशन लेयरिंग और डिफ़ॉल्ट” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस TypeScript Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर TypeScript Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- पर्यावरण चर के प्रकार निर्धारित करना
- स्कीमा-सत्यापित कॉन्फ़िगरेशन
- कॉन्फ़िगरेशन लेयरिंग और डिफ़ॉल्ट
- गुप्त मान और प्रकार सुरक्षा