neverthrow TypeScript: पूर्ण गाइड उदाहरणों के साथ

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

TypeScript के लिए neverthrow लाइब्रेरी: एरर हैंडलिंग के लिए Result टाइप

1. यह क्या है और क्यों ज़रूरी है

आधुनिक TypeScript डेवलपमेंट में, एरर हैंडलिंग अक्सर try/catch ब्लॉक्स की अव्यवस्था में बदल जाती है जो पूरे कोड में बिखरे होते हैं। neverthrow लाइब्रेरी इस समस्या का एक सुंदर समाधान प्रदान करती है, जो Rust और Haskell जैसी फंक्शनल प्रोग्रामिंग भाषाओं से प्रेरित है। यह Result<T, E> टाइप प्रदान करती है, जो सफल परिणाम (Ok) या त्रुटि (Err) को स्पष्ट रूप से दर्शाता है, जिससे एरर हैंडलिंग टाइप सिस्टम का हिस्सा बन जाती है, न कि कोई साइड इफेक्ट।

neverthrow का मुख्य उद्देश्य अंतर्निहित अपवादों को स्पष्ट टाइप्स से बदलना है। एक ऐसा फंक्शन लिखने के बजाय जो कभी भी अपवाद फेंक सकता है, आप Result लौटाते हैं, जिसे TypeScript कंपाइलर आपको प्रोसेस करने के लिए मजबूर करेगा। यह कोड को अधिक अनुमानित, सुरक्षित और स्व-दस्तावेजीकरण बनाता है। अब आपको यह अनुमान नहीं लगाना पड़ता कि कौन से फंक्शन एरर फेंक सकते हैं — रिटर्न वैल्यू का टाइप आपको सीधे बताता है।

यह लाइब्रेरी उन प्रोजेक्ट्स में विशेष रूप से उपयोगी है जहाँ विश्वसनीयता महत्वपूर्ण है: बैकएंड सर्विसेज, वित्तीय एप्लिकेशन, डेटा प्रोसेसिंग सिस्टम। यह Option (Maybe) टाइप्स जैसी अन्य फंक्शनल अवधारणाओं के साथ भी अच्छी तरह से काम करती है, और fp-ts जैसी लाइब्रेरीज के साथ एकीकृत की जा सकती है। neverthrow सिर्फ एक उपयोगिता नहीं है, यह कोड लिखने का एक दर्शन है जहाँ एरर डेटा हैं, न कि असाधारण स्थितियाँ।

2. इंस्टॉलेशन

TypeScript/NPM प्रोजेक्ट में neverthrow इंस्टॉल करना:

npm install neverthrow

yarn का उपयोग करने वाले प्रोजेक्ट्स के लिए:

yarn add neverthrow

pnpm के लिए:

pnpm add neverthrow

लाइब्रेरी TypeScript में लिखी गई है और इसमें पूर्ण टाइप्स शामिल हैं, इसलिए @types की अतिरिक्त इंस्टॉलेशन की आवश्यकता नहीं है। इंस्टॉल करने के बाद, आप मुख्य टाइप्स और फंक्शन्स को इम्पोर्ट कर सकते हैं:

import { ok, err, Result } from 'neverthrow';

3. त्वरित शुरुआत — न्यूनतम कार्यशील उदाहरण

चलिए एक सरल फंक्शन बनाते हैं जो दो संख्याओं को विभाजित करता है, लेकिन शून्य से विभाजन पर अपवाद फेंकने के बजाय Result लौटाता है:

import { ok, err, Result } from 'neverthrow';

// एरर टाइप परिभाषित करें
type DivisionError = { message: string; code: number };

// Result लौटाने वाला फंक्शन
function safeDivide(a: number, b: number): Result<number, DivisionError> {
  if (b === 0) {
    return err({ message: 'Division by zero', code: 1001 });
  }
  return ok(a / b);
}

// उपयोग
const result = safeDivide(10, 2);

// परिणाम को प्रोसेस करना
if (result.isOk()) {
  console.log('परिणाम:', result.value); // परिणाम: 5
} else {
  console.error('एरर:', result.error.message); // कभी नहीं चलेगा
}

const errorResult = safeDivide(10, 0);

if (errorResult.isErr()) {
  console.error('एरर:', errorResult.error.message); // एरर: Division by zero
}

यह उदाहरण मुख्य विचार को दर्शाता है: फंक्शन हमेशा Result लौटाता है, और कॉल करने वाला कोड वैल्यू का उपयोग करने से पहले यह जाँचने के लिए बाध्य है कि परिणाम सफल है या नहीं। TypeScript कंपाइलर आपको बिना जाँच के result.value तक पहुँचने नहीं देगा।

4. मुख्य तरीके/फंक्शन्स/क्लासेज

4.1. ok(value) — सफल परिणाम बनाना

सिग्नेचर:

function ok<T, E = never>(value: T): Ok<T, E>

यह क्या करता है: एक Ok इंस्टेंस बनाता है जो दी गई वैल्यू के साथ सफल परिणाम दर्शाता है।

उदाहरण:

import { ok } from 'neverthrow';

const success = ok(42);
console.log(success.isOk()); // true
console.log(success.value); // 42

4.2. err(e

अनुशंसाएँ