TypeScript Academy · पाठ

Result प्रकार का मॉडल बनाना

Result के साथ सफलता और विफलता को डेटा के रूप में दर्शाएँ।

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

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

परिणाम प्रकार

परिणाम ऐसे संचालन का प्रतिरूप है जो या तो किसी मान के साथ सफल होता है या किसी त्रुटि के साथ विफल होता है। यह एक विभेदित संयुक्त प्रकार है, जिसे अपवाद उत्पन्न करने के बजाय लौटाया जा सकता है।

परिणाम परिभाषित करना

पारंपरिक संरचना में ok विभेदक का उपयोग होता है। जब ok सही होता है, तब value मौजूद होता है; जब यह गलत होता है, तब error मौजूद होता है।

type Result<T, E> =
  | { ok: true; value: T }
  | { ok: false; error: E };

निर्माता-सहायक

छोटे ok और err सहायक हर बार वस्तु के शाब्दिक रूप स्वयं लिखने के बजाय परिणाम बनाना संक्षिप्त और पढ़ने योग्य बनाते हैं।

const ok = <T>(value: T): Result<T, never> => ({ ok: true, value });
const err = <E>(error: E): Result<never, E> => ({ ok: false, error });

परिणाम लौटाना

विफल हो सकने वाला फ़ंक्शन ok(value) या err(error) लौटाता है। वापसी प्रकार प्रत्येक कॉल करने वाले को दोनों संभावनाओं की सूचना देता है।

function divide(a: number, b: number): Result<number, string> {
  return b === 0 ? err("divide by zero") : ok(a / b);
}

ok पर प्रकार सीमित करना

result.ok की जाँच करने से संयुक्त प्रकार सीमित हो जाता है। सही वाली शाखा के भीतर TypeScript जानता है कि value मौजूद है; गलत वाली शाखा के भीतर वह जानता है कि error मौजूद है।

const r = divide(10, 2);
if (r.ok) console.log(r.value); // 5
else console.log(r.error);

विभेदक सुरक्षा सुनिश्चित करता है

ok फ़ील्ड वह विभेदक है जो संकलक को सही शाखा चुनने देता है। पहले यह सिद्ध किए बिना कि ok सही है, आप value तक पहुँच नहीं सकते।

const r = divide(1, 0);
// r.value here is a type error until we check r.ok
if (!r.ok) console.log("err:", r.error);

प्रकारित त्रुटियाँ

त्रुटियाँ केवल पाठ से अधिक समृद्ध हो सकती हैं। प्रकारित त्रुटियों के संयुक्त प्रकार का उपयोग करने पर, प्रकार सीमित करने के बाद कॉल करने वाले प्रत्येक प्रकार को सटीक रूप से संभाल सकते हैं।

type DivErr = { kind: "zero" } | { kind: "overflow" };
function div(a: number, b: number): Result<number, DivErr> {
  if (b === 0) return err({ kind: "zero" });
  return ok(a / b);
}

पूर्ण त्रुटि-प्रबंधन

त्रुटि प्रकार एक संयुक्त प्रकार होने के कारण, उसके विभेदक पर किया गया switch सभी संभावनाओं को संभालने के लिए जाँचा जा सकता है और यह सुनिश्चित करता है कि विफलता की हर स्थिति संभाली गई है।

const r = div(1, 0);
if (!r.ok) {
  switch (r.error.kind) {
    case "zero": console.log("no zero"); break;
    case "overflow": console.log("too big"); break;
  }
}

डिफ़ॉल्ट-मान सहायक

कभी-कभी आप केवल मान या कोई वैकल्पिक मान चाहते हैं। छोटा-सा unwrapOr साफ़-सुथरा पढ़ा जाता है और विफलता का प्रबंधन उसी स्थान तक सीमित रखता है।

function unwrapOr<T, E>(r: Result<T, E>, fallback: T): T {
  return r.ok ? r.value : fallback;
}
console.log(unwrapOr(divide(1, 0), -1)); // -1

परिणाम बनाम अपवाद उत्पन्न करना

Result विफलता को वापसी प्रकार में ले आता है, इसलिए कॉल करने वालों को उसका प्रबंधन करना पड़ता है। इसका लाभ यह है कि कोड अधिक स्पष्ट होता है, जो आम तौर पर अपेक्षित त्रुटियों के लिए उचित होता है।

पूर्ण उदाहरण

सब कुछ एक साथ रखें: सहायक परिभाषित करें, परिणाम लौटाएँ और उपयोग से पहले प्रकार सीमित करें। संकलक यह सुनिश्चित करता है कि त्रुटि वाली शाखा को स्वीकार किया गया है।

function safeParse(s: string): Result<number, string> {
  const n = Number(s);
  return Number.isNaN(n) ? err("NaN") : ok(n);
}
const p = safeParse("42");
console.log(p.ok ? p.value : p.error); // 42

त्वरित जाँच

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

पुनरावलोकन

परिणाम<T, E> एक विभेदित संयुक्त प्रकार है: { ok: true; value } या { ok: false; error }। इसे ok/err सहायकों से बनाएँ और ok पर प्रकार सीमित करके value या error तक सुरक्षित रूप से पहुँचें। प्रकारित त्रुटियाँ सभी स्थितियों को पूर्ण रूप से संभालना संभव बनाती हैं।

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

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

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

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

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

क्या “Result प्रकार का मॉडल बनाना” पाठ निःशुल्क है?

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

“Result प्रकार का मॉडल बनाना” में मैं क्या सीखूँगा?

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

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

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

“Result प्रकार का मॉडल बनाना” पाठ पूरा करने में कितना समय लगता है?

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

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

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

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

  1. त्रुटियाँ फेंकने की समस्या
  2. Result प्रकार का मॉडल बनाना
  3. Option और Maybe प्रकार
  4. रेलवे-उन्मुख प्रोग्रामिंग
← TypeScript Academy पर वापस जाएँ