Frontend Academy · पाठ

स्ट्रिक्ट मोड और any को हटाना

tsconfig में सभी स्ट्रिक्ट फ़्लैग सक्षम करें, any के स्थान पर unknown का उपयोग करें, प्रकार अभिकथनों को सुरक्षित रूप से लागू करें, और कमज़ोर प्रकार वाली फ़ाइल को स्ट्रिक्ट प्रकारों में बदलें।

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

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

सख्त मोड क्यों

strict: true को tsconfig.json में सक्षम करने पर TypeScript के सभी सुरक्षा फ़्लैग चालू हो जाते हैं — यही गंभीर प्रोजेक्ट्स का मानक है। यह कंपाइल समय पर null से जुड़ी बग, बिना प्रकार वाले पैरामीटर और असुरक्षित असाइनमेंट पकड़ लेता है।

strict क्या सक्षम करता है

strict एक मेटा-फ़्लैग है, जो ये फ़्लैग चालू करता है: noImplicitAny, strictNullChecks, strictFunctionTypes, strictBindCallApply, strictPropertyInitialization, alwaysStrict, noImplicitThis, useUnknownInCatchVariables।

strictNullChecks

इसके बिना null और undefined हर प्रकार को असाइन किए जा सकते हैं — यह बग का लगातार स्रोत है। इसे सक्षम करने पर आपको null की स्थितियों को स्पष्ट रूप से संभालना पड़ता है।

// Without strictNullChecks — runtime error:
function greet(name: string) { return name.toUpperCase(); }
greet(null); // compiler allows, crashes at runtime

// With strictNullChecks:
function greet(name: string | null) {
  if (name == null) return '';
  return name.toUpperCase();
}

noImplicitAny

इस फ़्लैग के बिना प्रकार का एनोटेशन न रखने वाले पैरामीटर डिफ़ॉल्ट रूप से any बन जाते हैं और टाइप सिस्टम को चुपचाप दरकिनार कर देते हैं। noImplicitAny के साथ आपको उनके प्रकार लिखने पड़ते हैं।

// Without noImplicitAny:
function format(value) { return value.toUpperCase(); } // value: any

// With:
function format(value: string) { return value.toUpperCase(); }

strictPropertyInitialization

बिना निश्चित प्रारंभिक मान वाली क्लास प्रॉपर्टीज़ संभावित रूप से undefined हो जाती हैं। या तो उन्हें प्रारंभ करें या निश्चित असाइनमेंट ऑपरेटर ! का उपयोग करें।

class User {
  name!: string;     // tell TS: I'll set this elsewhere
  age = 0;           // default initialiser
  email: string;     // ERROR with strictPropertyInitialization
  constructor(email: string) { this.email = email; } // FIX: init in ctor
}

any की जगह unknown का उपयोग करें

any टाइप जाँच से बाहर निकल जाता है। unknown सुरक्षित है — उपयोग करने से पहले आपको इसका प्रकार सीमित करना पड़ता है। हमेशा unknown को प्राथमिकता दें।

// any — no checks, bug magnet:
function parse(input: any) {
  return input.toUpperCase(); // compiler is fine, runtime may crash
}

// unknown — must narrow:
function parse(input: unknown) {
  if (typeof input === 'string') {
    return input.toUpperCase();
  }
  throw new Error('Expected string');
}

टाइप असर्शन सुरक्षित रूप से करें

यदि आपको असर्शन करना ही पड़े (क्योंकि आपको TS से बेहतर जानकारी है), तो as सिंटैक्स को प्राथमिकता दें। जब तक वास्तव में कोई विकल्प न हो, दोहरी असर्शन (x as unknown as T) न करें — यह खराब कोड का संकेत है।

const el = document.getElementById('app') as HTMLDivElement;
el.style.background = 'blue';

// Safer alternative: runtime check
const el = document.getElementById('app');
if (!(el instanceof HTMLDivElement)) throw new Error('app missing');
el.style.background = 'blue'; // narrowed to HTMLDivElement

प्रोजेक्ट से any हटाना

रणनीति: strict सक्षम करें और उससे उत्पन्न त्रुटियों को एक-एक करके हर फ़ाइल में ठीक करें। unknown और प्रकार सीमित करने की तकनीक का उपयोग करें। पहले से ज्ञात समस्या वाले स्थानों पर TODO टिप्पणी के साथ @ts-expect-error जोड़ें, ताकि उन्हें नज़रअंदाज़ न किया जा सके।

लिंट नियम: no-explicit-any

नए any को जोड़े जाने से रोकने के लिए अपने ESLint कॉन्फ़िगरेशन में @typescript-eslint/no-explicit-any जोड़ें।

// .eslintrc.json
{
  "rules": {
    "@typescript-eslint/no-explicit-any": "error"
  }
}

strictFunctionTypes

यह फ़ंक्शन पैरामीटर की कॉन्ट्रावेरिएंट जाँच लागू करता है — अपेक्षित प्रकार से अधिक व्यापक पैरामीटर प्रकार वाले फ़ंक्शनों को असाइन करने से रोकता है, जो रनटाइम पर क्रैश कर सकते हैं।

कैच वेरिएबल का प्रकार

useUnknownInCatchVariables के कारण catch (e) में e: unknown का अनुमान any की जगह लगाया जाता है। प्रॉपर्टीज़ तक पहुँचने से पहले आपको इसका प्रकार सीमित करना पड़ता है।

try {
  doRisky();
} catch (e) {
  // e is unknown
  if (e instanceof Error) {
    console.error(e.message);
  } else {
    console.error('Unknown error', e);
  }
}

माइग्रेशन सुझाव

नए प्रोजेक्ट्स में पहले दिन से strict सक्षम करें। पुराने प्रोजेक्ट्स के लिए फ़्लैग धीरे-धीरे सक्षम करें। सबसे पहले strictNullChecks से शुरू करें (इससे सबसे बड़ा लाभ मिलता है), फिर noImplicitAny सक्षम करें। //@ts-ignore की जगह //@ts-expect-error का उपयोग करें, ताकि समस्या ठीक होने पर टिप्पणी हटाई जा सके।

त्वरित जाँच

जब आपको किसी मान का प्रकार पता न हो, तब unknown, any से अधिक सुरक्षित क्यों है?

पुनरावलोकन: सख्त मोड

पूर्ण सुरक्षा के लिए strict: true सक्षम करें। strictNullChecks null को संभालना अनिवार्य करता है। noImplicitAny के लिए पैरामीटर के प्रकार का एनोटेशन आवश्यक है। क्लास फ़ील्ड के लिए strictPropertyInitialization उपयोग करें। any की जगह unknown का उपयोग करें — प्रकार-रक्षक की मदद से उसका प्रकार सीमित करें। दोहरी असर्शन से बचें। no-explicit-any के साथ लिंट चलाएँ। @ts-expect-error मार्कर का उपयोग करके पुराने कोड को एक-एक फ़ाइल करके माइग्रेट करें।

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

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

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

पाठ्यक्रम
41
पाठ
163

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

क्या “स्ट्रिक्ट मोड और any को हटाना” पाठ निःशुल्क है?

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

“स्ट्रिक्ट मोड और any को हटाना” में मैं क्या सीखूँगा?

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

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

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

“स्ट्रिक्ट मोड और any को हटाना” पाठ पूरा करने में कितना समय लगता है?

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

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

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

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

  1. टेम्पलेट लिटरल प्रकार
  2. डेकोरेटर और मेटाडेटा
  3. React के साथ TypeScript: FC जेनेरिक हुक
  4. स्ट्रिक्ट मोड और any को हटाना
← Frontend Academy पर वापस जाएँ