TypeScript Academy · पाठ

any हटाना; unknown और नैरोइंग को प्राथमिकता

any को unknown और नैरोइंग से बदलें; छोटे गार्ड और असर्शन फ़ंक्शन जोड़ें; बिल्ड तोड़े बिना सख्ती के फ़्लैग धीरे-धीरे सक्षम करें।

पाठ 1, कुल 2 में से8 चरण

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

परिचय

लक्ष्य: any वाले जोखिम-स्थलों को हटाएँ। अविश्वसनीय मानों के लिए अज्ञात को प्राथमिकता दें और सरल जाँचों से उनका प्रकार सीमित करें। आप छोटे गार्ड जोड़ेंगे और कठोर फ़्लैग चरण-दर-चरण सक्षम करेंगे।

  • किसी भी प्रकार का → अज्ञात
  • typeof/in/instanceof से प्रकार सीमित करना
  • अभिकथन फ़ंक्शन

any की कमियाँ

any सुरक्षा बंद कर देता है: गलत संरचनाएँ या स्ट्रिंग का गणित कंपाइल-समय पर पकड़ में नहीं आता और बाद में विफल होता है।

// any hides bugs
function avgBad(values: any): number {
  // Compiles even if values is not an array of numbers
  return values.reduce((a: number, b: number) => a + b, 0) / values.length
}

// Runtime crash examples:
// avgBad(123)
// avgBad(["1","2"]) // string addition!

unknown और प्रकार सीमित करना

बाहरी स्रोतों से आने वाले इनपुट के लिए unknown का उपयोग करें। Array.isArray और typeof से प्रकार सीमित करें, फिर सुरक्षित रूप से गणना करें।

// unknown forces checks
function avg(values: unknown): number {
  if (!Array.isArray(values)) throw new Error("values must be an array")
  const nums = values.filter((v): v is number => typeof v === "number")
  if (nums.length === 0) throw new Error("no numbers")
  const sum = nums.reduce((a, b) => a + b, 0)
  return sum / nums.length
}

// avg([1,2,3]) → 2; avg("oops") throws early with a clear message

प्रकार गार्ड

कॉल करने वाले को साफ़-सुथरे ढंग से प्रकार सीमित करने के लिए प्रेडिकेट x is T बनाएँ। गार्ड छोटे रखें और उन्हें केवल संरचनात्मक जाँचों पर केंद्रित करें।

// Small predicate to reuse narrowing
export type User = { id: string; name: string }

export function isUser(x: unknown): x is User {
  return typeof x === "object" && x !== null
    && typeof (x as any).id === "string"
    && typeof (x as any).name === "string"
}

export function hello(x: unknown) {
  if (!isUser(x)) throw new Error("invalid user")
  return `Hello, ${x.name}`
}

अभिकथन फ़ंक्शन

अभिकथन फ़ंक्शन (asserts x is T) चलने के बाद प्रकार सीमित करते हैं। इनका उपयोग आवश्यक पूर्वशर्तों के लिए करें और स्पष्ट संदेशों के साथ त्रुटि उत्पन्न करें।

// Assertion function throws or narrows
function assertUser(x: unknown): asserts x is { id: string; name: string } {
  if (typeof x !== "object" || x === null) throw new Error("not an object")
  const o = x as Record<string, unknown>
  if (typeof o.id !== "string" || typeof o.name !== "string") throw new Error("bad user")
}

export function greetUnsafe(x: unknown) {
  assertUser(x) // now x is narrowed after this call
  return `Hi ${x.name}`
}

कठोरता की योजना

योजना:

  • noImplicitAny सक्षम करें और पहले नई त्रुटियाँ ठीक करें।
  • बाहरी इनपुट के लिए गार्ड जोड़ें।
  • strictNullChecks सक्षम करें और अपरिभाषित मानों को स्पष्ट रूप से संभालें।
  • ESLint से बचे हुए any पर नज़र रखें और समय के साथ उन्हें कम करें।

unknown बनाम any की जाँच

त्वरित जाँच: अविश्वसनीय डेटा के लिए any की जगह unknown को प्राथमिकता क्यों दें?

पुनरावलोकन

पुनरावलोकन: any को unknown से बदलें, छोटे गार्ड या अभिकथन जोड़ें और निर्माण को सफल बनाए रखने के लिए कठोर फ़्लैग धीरे-धीरे बढ़ाएँ।

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

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

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

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

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

क्या “any हटाना; unknown और नैरोइंग को प्राथमिकता” पाठ निःशुल्क है?

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

“any हटाना; unknown और नैरोइंग को प्राथमिकता” में मैं क्या सीखूँगा?

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

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

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

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

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

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

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

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

  1. any हटाना; unknown और नैरोइंग को प्राथमिकता
  2. सख्त फ़्लैग धीरे-धीरे लागू करना
← TypeScript Academy पर वापस जाएँ