TypeScript Academy · पाठ

पर्यावरण चर के प्रकार निर्धारित करना

process.env को सटीक, सत्यापित प्रकार दें।

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

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

process.env की समस्या

नोड में process.env का प्रकार Record<string, string | undefined> होता है। हर चर अनुपस्थित हो सकता है और हर मान स्ट्रिंग होता है, इसलिए कच्ची पहुँच असुरक्षित और प्रकाररहित होती है।

प्रकारयुक्त Env इंटरफ़ेस घोषित करना

सबसे पहले यह बताइए कि आपके ऐप को वास्तव में किस कॉन्फ़िगरेशन की आवश्यकता है। इसके लिए सही प्रकारों और आवश्यक तथा वैकल्पिक फ़ील्ड वाला सटीक इंटरफ़ेस बनाइए।

interface Env {
  PORT: number;
  NODE_ENV: "development" | "production";
  DATABASE_URL: string;
  DEBUG?: boolean; // optional
}

कच्चे मान पढ़ना

सभी मान स्ट्रिंग या undefined के रूप में आते हैं। आपको उन्हें सावधानी से पढ़ना चाहिए, क्योंकि कुंजियाँ मौजूद ही न हों, ऐसा संभव है।

const rawPort = process.env.PORT; // string | undefined
const rawEnv = process.env.NODE_ENV; // string | undefined

आवश्यक बनाम वैकल्पिक चर

ऐसे कुछ चर होते हैं जिनका मौजूद होना ऐप चलने के लिए अनिवार्य है; अन्य के लिए उचित fallback होते हैं। आवश्यक मानों के लिए बना सहायक किसी मान के अनुपस्थित होने पर स्पष्ट त्रुटि के साथ विफल होता है।

function required(name: string): string {
  const v = process.env[name];
  if (v === undefined) throw new Error("Missing env: " + name);
  return v;
}

संख्याओं का पार्स करना

संख्यात्मक चरों को बदलने और मान्य करने की आवश्यकता होती है, क्योंकि parseInt से NaN प्राप्त हो सकता है। पार्सिंग को इस तरह लपेटिए कि गलत इनपुट तुरंत अस्वीकार हो जाए।

function num(name: string): number {
  const n = Number(required(name));
  if (Number.isNaN(n)) throw new Error(name + " is not a number");
  return n;
}

बूलियन मानों का पार्स करना

बूलियन मान "true" जैसी स्ट्रिंग के रूप में आते हैं। खाली न होने वाली स्ट्रिंग की सत्यता पर निर्भर करने के बजाय उन्हें स्पष्ट रूप से सामान्यीकृत कीजिए।

function bool(name: string, def = false): boolean {
  const v = process.env[name];
  if (v === undefined) return def;
  return v === "true" || v === "1";
}

प्रकारयुक्त Config बनाना

पार्स किए गए मानों को Env इंटरफ़ेस से मेल खाने वाले एक ऑब्जेक्ट में एकत्र कीजिए। इसके बाद ऐप का बाकी भाग प्रकारयुक्त config का उपयोग करता है और सीधे कभी process.env का उपयोग नहीं करता।

const env: Env = {
  PORT: num("PORT"),
  NODE_ENV: required("NODE_ENV") as Env["NODE_ENV"],
  DATABASE_URL: required("DATABASE_URL"),
  DEBUG: bool("DEBUG"),
};

स्ट्रिंग यूनियनों पर सीमाएँ लगाना

जिन चरों के लिए मानों का एक निश्चित समूह हो, उनके मानों को उसी समूह के विरुद्ध मान्य कीजिए, ताकि कोई अनपेक्षित मान गलत लिटरल प्रकार के रूप में स्वीकार न हो जाए।

function oneOf<T extends string>(name: string, allowed: readonly T[]): T {
  const v = required(name) as T;
  if (!allowed.includes(v)) throw new Error(name + " invalid");
  return v;
}

पहुँच को केंद्रीकृत करना

एक ही मॉड्यूल से एकमात्र env ऑब्जेक्ट निर्यात कीजिए। हर उपभोक्ता इसे आयात करता है, जिससे उसे पूर्ण प्रकार जानकारी और पार्सिंग तर्क बदलने के लिए एक ही स्थान मिलता है।

export const config = env;
// elsewhere: import { config } from "./config";

ProcessEnv को संवर्धित करना (वैकल्पिक)

आप कच्ची पहुँच को प्रकारयुक्त बनाने के लिए NodeJS.ProcessEnv का मॉड्यूल संवर्धन घोषित कर सकते हैं, लेकिन पार्स किया हुआ config ऑब्जेक्ट अधिक सुरक्षित है, क्योंकि वह मान्य और परिवर्तित भी करता है।

// declare global { namespace NodeJS { interface ProcessEnv { PORT: string } } }

प्रकारयुक्त Config ऑब्जेक्ट बेहतर क्यों है

पार्स किया हुआ और मान्य config सही प्रकार (संख्याएँ, बूलियन मान और यूनियन), आवश्यक चरों की सुनिश्चित उपलब्धता और पूरे ऐप के लिए एक ही आयात देता है। यह जगह-जगह की असुरक्षित process.env पठन-प्रक्रियाओं से बेहतर है।

त्वरित जाँच

इस पाठ की त्वरित जाँच।

पुनरावलोकन

एक प्रकारयुक्त Env इंटरफ़ेस घोषित कीजिए, फिर ऐसे सहायकों से process.env को पार्स कीजिए जो मानों को बदलें और मान्य करें (संख्याएँ, बूलियन मान और स्ट्रिंग यूनियन) तथा आवश्यक चर अनुपस्थित होने पर विफल हों। एक प्रकारयुक्त config ऑब्जेक्ट निर्यात कीजिए, ताकि ऐप कभी कच्चे process.env को न छुए।

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

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

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

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

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

क्या “पर्यावरण चर के प्रकार निर्धारित करना” पाठ निःशुल्क है?

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

“पर्यावरण चर के प्रकार निर्धारित करना” में मैं क्या सीखूँगा?

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

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

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

“पर्यावरण चर के प्रकार निर्धारित करना” पाठ पूरा करने में कितना समय लगता है?

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

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

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

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

  1. पर्यावरण चर के प्रकार निर्धारित करना
  2. स्कीमा-सत्यापित कॉन्फ़िगरेशन
  3. कॉन्फ़िगरेशन लेयरिंग और डिफ़ॉल्ट
  4. गुप्त मान और प्रकार सुरक्षा
← TypeScript Academy पर वापस जाएँ