TypeScript में एसिंक्रोनस प्रोग्रामिंग: व्यावहारिक पूर्ण गाइड

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

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

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

TypeScript में एसिंक्रोनस प्रोग्रामिंग: व्यावहारिक पूर्ण गाइड

\n\n

आधुनिक वेब डेवलपमेंट एसिंक्रोनस ऑपरेशन के बिना अकल्पनीय है: API अनुरोध, डेटाबेस के साथ काम करना, फ़ाइलें पढ़ना और टाइमर। TypeScript, JavaScript पर एक ओवरले के रूप में, न केवल एसिंक्रोनस प्रोग्रामिंग की सभी क्षमताओं को बनाए रखता है, बल्कि सख्त टाइपिंग भी जोड़ता है, जिससे कोड अधिक अनुमानित और सुरक्षित हो जाता है। इस गाइड में, हम TypeScript में एसिंक्रोनसिटी की प्रमुख अवधारणाओं को समझेंगे - बुनियादी Promise से लेकर उन्नत पैटर्न तक - वास्तविक कोड उदाहरणों के साथ।

\n\n

1. मूल बातें: Promise और टाइपिंग

\n\n

Promise एक ऑब्जेक्ट है जो एक एसिंक्रोनस ऑपरेशन के परिणाम का प्रतिनिधित्व करता है, जो सफलतापूर्वक पूरा (fulfilled) या अस्वीकार (rejected) हो सकता है। TypeScript आपको सख्ती से टाइप करने की अनुमति देता है कि Promise क्या मान लौटाएगा।

\n\n
// टाइप किए गए Promise का उदाहरण\nfunction fetchUserData(userId: number): Promise<{ name: string; email: string }> {\n  return new Promise((resolve, reject) => {\n    setTimeout(() => {\n      if (userId > 0) {\n        resolve({ name: 'इवान इवानोव', email: 'ivan@example.com' });\n      } else {\n        reject(new Error('अमान्य उपयोगकर्ता ID'));\n      }\n    }, 1000);\n  });\n}\n\n// उपयोग\nfetchUserData(1)\n  .then(user => console.log(user.name)) // इवान इवानोव\n  .catch(error => console.error(error.message));\n
\n\n

ध्यान दें: Promise<{ name: string; email: string }> गारंटी देता है कि then में हमें इन्हीं फ़ील्ड वाला एक ऑब्जेक्ट मिलेगा। यह अपरिभाषित गुणों से संबंधित त्रुटियों से बचाता है।

\n\n

2. Async/Await: TypeScript के साथ सिंटैक्टिक शुगर

\n\n

कीवर्ड async और await एसिंक्रोनस कोड को सिंक्रोनस जैसा बनाते हैं, प्रदर्शन खोए बिना। TypeScript स्वचालित रूप से async-फ़ंक्शन के रिटर्न प्रकार को Promise<T> के रूप में निर्धारित करता है।

\n\n
// फ़ंक्शन Promise<number> लौटाता है\nasync function getDiscountPrice(price: number, discountPercent: number): Promise<number> {\n  if (discountPercent < 0 || discountPercent > 100) {\n    throw new Error('अमान्य छूट प्रतिशत');\n  }\n  // एसिंक्रोनस गणना का अनुकरण\n  const discount = await calculateDiscountAsync(price, discountPercent);\n  return price - discount;\n}\n\n// सहायक फ़ंक्शन\nfunction calculateDiscountAsync(price: number, percent: number): Promise<number> {\n  return Promise.resolve(price * percent / 100);\n}\n\n// उपयोग\nasync function main() {\n  try {\n    const finalPrice = await getDiscountPrice(1000, 20);\n    console.log(`अंतिम मूल्य: ${finalPrice}`); // 800\n  } catch (error) {\n    if (error instanceof Error) {\n      console.error('त्रुटि:', error.message);\n    }\n  }\n}\nmain();\n
\n\n

महत्वपूर्ण: TypeScript async-फ़ंक्शन के बाहर await का उपयोग करने की अनुमति नहीं देता है (विशिष्ट सेटिंग्स वाले मॉड्यूल में शीर्ष स्तर को छोड़कर)। हमेशा कॉल को async फ़ंक्शन में लपेटें या .then() का उपयोग करें।

\n\n

3. त्रुटि प्रबंधन और उन्नत पैटर्न

\n\n

उचित त्रुटि प्रबंधन विश्वसनीय एसिंक्रोनस कोड की नींव है। TypeScript संकलन चरण में त्रुटियों को पकड़ने में मदद करता है, लेकिन प्रबंधन तर्क मैन्युअल रूप से लिखा जाना चाहिए।

\n\n

3.1. async/await में त्रुटि प्रबंधन

\n\n
async function safeFetchData(url: string): Promise<unknown> {\n  try {\n    const response = await fetch(url);\n    if (!response.ok) {\n      throw new Error(`HTTP त्रुटि! स्थिति: ${response.status}`);\n    }\n    return await response.json();\n  } catch (error) {\n    // TypeScript त्रुटि प्रकार को Error तक सीमित करता है\n    if (error instanceof Error) {\n      console.error('अनुरोध त्रुटि:', error.message);\n      // डिफ़ॉल्ट मान लौटा सकते हैं या त्रुटि को आगे बढ़ा सकते हैं\n      return null;\n    }\n    throw error; // अज्ञात त्रुटि                

ब्लॉग

पुस्तक अनुशंसाएँ