टाइपस्क्रिप्ट में उन्नत त्रुटि प्रबंधन तकनीकें

मजबूत TypeScript एप्लिकेशन बनाने के लिए प्रभावी त्रुटि प्रबंधन महत्वपूर्ण है। बुनियादी try-catch ब्लॉकों से परे, TypeScript त्रुटियों को सुंदर ढंग से संभालने और कोड विश्वसनीयता सुनिश्चित करने के लिए कई उन्नत तकनीकें प्रदान करता है। यह लेख इनमें से कुछ उन्नत त्रुटि प्रबंधन रणनीतियों का पता लगाता है।

1. कस्टम त्रुटि वर्ग

कस्टम त्रुटि वर्ग बनाने से आप विभिन्न प्रकार की त्रुटियों को अधिक सटीकता से प्रस्तुत कर सकते हैं। कस्टम त्रुटियों में अतिरिक्त गुण या विधियाँ शामिल हो सकती हैं, जो विशिष्ट समस्याओं की पहचान करने और उन्हें संभालने में मदद कर सकती हैं।

class CustomError extends Error {
  constructor(public message: string, public code: number) {
    super(message);
    this.name = 'CustomError';
  }
}

function throwError() {
  throw new CustomError('Something went wrong', 500);
}

try {
  throwError();
} catch (error) {
  if (error instanceof CustomError) {
    console.error(`Error: ${error.message}, Code: ${error.code}`);
  } else {
    console.error('Unexpected error:', error);
  }
}

इस उदाहरण में, CustomError अंतर्निहित Error वर्ग का विस्तार करता है और त्रुटि कोड निर्दिष्ट करने के लिए code गुण जोड़ता है।

2. एसिंक्रोनस कोड में त्रुटि प्रबंधन

एसिंक्रोनस कोड में अक्सर त्रुटियों के लिए विशेष हैंडलिंग की आवश्यकता होती है। async और await के साथ-साथ try-catch ब्लॉक का उपयोग करके एसिंक्रोनस संचालन में त्रुटि हैंडलिंग को सरल बनाया जा सकता है।

async function fetchData(url: string): Promise {
  try {
    const response = await fetch(url);
    if (!response.ok) {
      throw new CustomError('Failed to fetch data', response.status);
    }
    const data = await response.json();
    console.log(data);
  } catch (error) {
    if (error instanceof CustomError) {
      console.error(`Error: ${error.message}, Code: ${error.code}`);
    } else {
      console.error('Unexpected error:', error);
    }
  }
}

fetchData('https://api.example.com/data');

यह उदाहरण async, await, और try-catch का उपयोग करके एसिंक्रोनस fetch कॉल से त्रुटियों को संभालने का प्रदर्शन करता है।

3. TypeScript के साथ React में त्रुटि सीमाएँ

React और TypeScript के साथ काम करते समय, त्रुटि सीमाएँ घटक वृक्ष में त्रुटियों को पकड़ने और फ़ॉलबैक UI प्रदर्शित करने में मदद करती हैं। TypeScript के साथ त्रुटि सीमाओं को लागू करने से टाइप सुरक्षा और उचित त्रुटि प्रबंधन सुनिश्चित होता है।

import React, { Component, ErrorInfo } from 'react';

interface Props {}

interface State {
  hasError: boolean;
}

class ErrorBoundary extends Component<Props, State> {
  constructor(props: Props) {
    super(props);
    this.state = { hasError: false };
  }

  static getDerivedStateFromError(): State {
    return { hasError: true };
  }

  componentDidCatch(error: Error, errorInfo: ErrorInfo): void {
    console.error('Error caught by boundary:', error, errorInfo);
  }

  render() {
    if (this.state.hasError) {
      return <h1>Something went wrong.</h1>
    }

    return this.props.children;
  }
}

export default ErrorBoundary;

इस React उदाहरण में, ErrorBoundary घटक अपने चाइल्ड घटकों में त्रुटियों को पकड़ता है और त्रुटि होने पर फ़ॉलबैक UI प्रदर्शित करता है।

4. त्रुटि प्रकारों के लिए टाइप गार्ड का उपयोग करना

टाइप गार्ड टाइपस्क्रिप्ट में त्रुटि के प्रकार को सीमित करने में मदद करते हैं। यह विशेष रूप से विभिन्न प्रकार या विभिन्न स्रोतों से त्रुटियों को संभालने के दौरान उपयोगी होता है।

function isCustomError(error: any): error is CustomError {
  return error instanceof CustomError;
}

try {
  throw new CustomError('Example error', 400);
} catch (error) {
  if (isCustomError(error)) {
    console.error(`CustomError: ${error.message}, Code: ${error.code}`);
  } else {
    console.error('Unknown error:', error);
  }
}

isCustomError फ़ंक्शन एक प्रकार रक्षक है जो यह निर्धारित करने में सहायता करता है कि पकड़ी गई त्रुटि CustomError का उदाहरण है या नहीं।

5. केंद्रीकृत त्रुटि प्रबंधन

बड़े अनुप्रयोगों के लिए, त्रुटि प्रबंधन को केंद्रीकृत करने से त्रुटि प्रबंधन सरल हो सकता है और स्थिरता सुनिश्चित हो सकती है। यह Express.js में मिडलवेयर या अन्य फ़्रेमवर्क में वैश्विक त्रुटि हैंडलर का उपयोग करके किया जा सकता है।

import express, { Request, Response, NextFunction } from 'express';

const app = express();

app.use((err: any, req: Request, res: Response, next: NextFunction) => {
  console.error('Centralized Error:', err.message);
  res.status(500).send('Internal Server Error');
});

app.listen(3000, () => {
  console.log('Server running on port 3000');
});

यह उदाहरण Express.js एप्लिकेशन के लिए एक केंद्रीकृत त्रुटि हैंडलर को प्रदर्शित करता है। यह सभी त्रुटियों को पकड़ता है और एक सामान्य संदेश के साथ प्रतिक्रिया करता है।

निष्कर्ष

टाइपस्क्रिप्ट में उन्नत त्रुटि प्रबंधन तकनीक त्रुटि प्रबंधन पर अधिक नियंत्रण प्रदान करके आपके अनुप्रयोगों की मजबूती को बढ़ाती है। कस्टम त्रुटि वर्ग, एसिंक्रोनस त्रुटियों को संभालना, रिएक्ट में त्रुटि सीमाओं का उपयोग करना, टाइप गार्ड और केंद्रीकृत त्रुटि प्रबंधन प्रभावी त्रुटि प्रबंधन के लिए आवश्यक रणनीतियाँ हैं। इन तकनीकों को लागू करने से अधिक रखरखाव योग्य और विश्वसनीय कोड प्राप्त होगा।

लिंक
TypeScript