विभेदित यूनियन के साथ पूर्ण त्रुटि-प्रबंधन
switch+never, सहायक यूटिलिटी और मॉड्यूलों में कंपाइल-टाइम कवरेज जाँच की सहायता से विभेदित यूनियन के लिए सभी संभावित स्थितियों को संभालने वाले हैंडलर लिखें।
विभेदित यूनियन के साथ पूर्ण त्रुटि-प्रबंधन, CoddyKit पर TypeScript Academy का एक निःशुल्क पाठ है। यह 2 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह TypeScript Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। TypeScript Academy पाठ्यक्रम में कुल 2 पाठ शामिल हैं।
परिचय
लक्ष्य: संघ के प्रत्येक सदस्य को संभाला जाना सुनिश्चित करें। आप स्विच + कभी नहीं, एक छोटे exhaustiveCheck सहायक का उपयोग करेंगे और देखेंगे कि फ़ाइलों के बीच पूरी कवरेज कैसे बनाए रखी जाए।
- भेदक (टैग फ़ील्ड)
- पूर्ण स्विच
- तुरंत विफल होने वाले डिफ़ॉल्ट
भेदयुक्त संघ
एक भेदयुक्त संघ में एक साझा टैग होता है (यहाँ kind)। प्रत्येक रूपांतर अपना डेटा रखता है।
export type Payment =
| { kind: "Card"; last4: string }
| { kind: "Cash" }
| { kind: "Wire"; iban: string }स्विच + never
default p को never निर्दिष्ट करता है। बाद में नया रूपांतर जोड़ने पर, जब तक आप उसे संभाल नहीं लेते, कंपाइलर त्रुटि देगा।
export function describe(p: Payment): string {
switch (p.kind) {
case "Card": return `Card ••••${p.last4}`
case "Cash": return "Cash"
case "Wire": return `Wire ${p.iban}`
default: {
const _exhaustive: never = p
return _exhaustive
}
}
}exhaustiveCheck सहायक
आशय को स्पष्ट बनाने के लिए एक छोटा सहायक उपयोग करें। never पैरामीटर बिना संभाले मामलों को केवल रनटाइम में उत्पन्न होने वाली त्रुटि नहीं, बल्कि प्रकार त्रुटि बनाता है।
export function exhaustiveCheck(x: never): never {
throw new Error(`Unhandled case: ${JSON.stringify(x)}`)
}
export function pay(p: Payment): string {
switch (p.kind) {
case "Card": return "charged card"
case "Cash": return "took cash"
case "Wire": return "initiated wire"
default: return exhaustiveCheck(p)
}
}मॉड्यूल-पार कवरेज
जब संघ एक फ़ाइल में परिभाषित और दूसरी में संभाले जाते हैं, तब जोड़ी गई शाखा तब तक निर्माण को विफल करती रहती है जब तक सभी स्विच अपडेट न हो जाएँ—ठीक यही हम चाहते हैं।
// errors.ts
export type AppError =
| { tag: "Auth"; reason: "Unauthorized" | "Forbidden" }
| { tag: "NotFound"; resource: string }
| { tag: "Conflict"; resource: string }
// handler.ts
import type { AppError } from "./errors"
import { exhaustiveCheck } from "./exhaustive"
export function toStatus(e: AppError): number {
switch (e.tag) {
case "Auth": return e.reason === "Unauthorized" ? 401 : 403
case "NotFound": return 404
case "Conflict": return 409
default: return exhaustiveCheck(e)
}
}सुझाव और कमियाँ
सुझाव:
- स्ट्रिंग लिटरल टैग को प्राथमिकता दें (जैसे
tag/kind)। - रूपांतर छोटे रखें; बहुत बड़े संघों के बजाय नेस्टेड ऑब्जेक्ट के माध्यम से डेटा का संयोजन करें।
neverगार्ड के बिना कभी भीdefaultका उपयोग न करें; इससे छूटे हुए मामले छिप जाते हैं।
पूर्णता की जाँच
त्वरित जाँच: पूर्ण प्रबंधन किससे सुनिश्चित होता है?
पुनरावलोकन
पुनरावलोकन: एक भेदक का उपयोग करें, स्विच लिखें और संघों के बदलने पर पूरी कवरेज सुनिश्चित करने के लिए डिफ़ॉल्ट शाखा में never निर्दिष्ट करें (या exhaustiveCheck कॉल करें)।
एआई शिक्षक के साथ TypeScript सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 101
- पाठ
- 352
अक्सर पूछे जाने वाले प्रश्न
क्या “विभेदित यूनियन के साथ पूर्ण त्रुटि-प्रबंधन” पाठ निःशुल्क है?
हाँ—“विभेदित यूनियन के साथ पूर्ण त्रुटि-प्रबंधन” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और TypeScript Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। TypeScript Academy पाठ्यक्रम में कुल 2 पाठ शामिल हैं।
“विभेदित यूनियन के साथ पूर्ण त्रुटि-प्रबंधन” में मैं क्या सीखूँगा?
switch+never, सहायक यूटिलिटी और मॉड्यूलों में कंपाइल-टाइम कवरेज जाँच की सहायता से विभेदित यूनियन के लिए सभी संभावित स्थितियों को संभालने वाले हैंडलर लिखें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ TypeScript Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या TypeScript Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर TypeScript Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 2 में से 2वाँ पाठ है।
“विभेदित यूनियन के साथ पूर्ण त्रुटि-प्रबंधन” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस TypeScript Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर TypeScript Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- Result/Either शैली के प्रकार
- विभेदित यूनियन के साथ पूर्ण त्रुटि-प्रबंधन