TypeScript में डेटा वैलिडेशन: लाइब्रेरीज़, दृष्टिकोण और कोड उदाहरण

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

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

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

TypeScript में डेटा वैलिडेशन: सिद्धांत से व्यवहार तक



TypeScript में डेवलपमेंट के दौरान एक मुख्य समस्या है — स्टैटिक टाइपिंग और बाहरी स्रोतों (API, फॉर्म, localStorage) से आने वाले वास्तविक डेटा के बीच का अंतर। TypeScript कंपाइलेशन के समय प्रकारों की जाँच करता है, लेकिन रनटाइम में प्रकार गायब हो जाते हैं। डेटा वैलिडेशन — यह डेटा के निश्चित नियमों के अनुरूपता की जाँच करने की प्रक्रिया है रनटाइम में, जो एप्लिकेशन की विश्वसनीयता के लिए अत्यंत महत्वपूर्ण है।



इस लेख में हम TypeScript में डेटा वैलिडेशन के लिए लोकप्रिय लाइब्रेरीज़: Zod, Yup, Joi और class-validator पर चर्चा करेंगे। हम उनकी विशेषताओं, उपयोग के उदाहरणों पर विचार करेंगे और आपके प्रोजेक्ट के लिए उपयुक्त टूल चुनने में मदद करेंगे।



केवल TypeScript ही पर्याप्त क्यों नहीं है?



TypeScript — यह डेवलपर के लिए एक उपकरण है। यह अधिक सुरक्षित कोड लिखने में मदद करता है, लेकिन इससे रक्षा नहीं करता:

  • API से गलत डेटा (फ़ील्ड age स्ट्रिंग "25" के रूप में आ सकता है)
  • आवश्यक फ़ील्ड की अनुपस्थिति
  • गलत फ़ॉर्मेट (email, URL, फ़ोन)
  • मानों का स्वीकार्य सीमा से बाहर जाना


रनटाइम में डेटा वैलिडेशन इन समस्याओं को हल करता है, स्कीमा के अनुरूपता के लिए डेटा की जाँच करता है और स्पष्ट त्रुटियाँ देता है।



Zod — आधुनिक मानक



Zod — TypeScript में वैलिडेशन के लिए सबसे लोकप्रिय लाइब्रेरी है। इसका मुख्य लाभ — टाइप सिस्टम के साथ गहन एकीकरण: स्कीमा से स्वचालित रूप से प्रकार निकाला जा सकता है।



स्थापना

npm install zod


उपयोग का उदाहरण

import { z } from 'zod';

// स्कीमा परिभाषित करेंconst UserSchema = z.object({ id: z.number().positive(), email: z.string().email(), age: z.number().min(18).max(120).optional(), role: z.enum(['admin', 'user', 'guest']),});

// स्कीमा से प्रकार निकालेंtype User = z.infer<typeof UserSchema>;

// वैलिडेशनconst result = UserSchema.safeParse({ id: 1, email: 'user@example.com', age: 25, role: 'admin',});

if (result.success) { // result.data — User प्रकार के साथ सही डेटा console.log(result.data.email);} else { // result.error — त्रुटियों के बारे में विस्तृत जानकारी console.log(result.error.format());}


Zod की प्रमुख क्षमताएँ:

  • z.infer के माध्यम से स्वचालित प्रकार निष्कर्षण
  • डेटा परिवर्तन (उदाहरण के लिए, स्ट्रिंग को संख्या में बदलना)
  • नेस्टेड ऑब्जेक्ट और ऐरे का वैलिडेशन
  • union, intersection, discriminated unions का समर्थन
  • Refinement — कस्टम जाँच


Yup — समय-परीक्षित



Yup — Formik के लेखकों की लाइब्रेरी। React में फॉर्म वैलिडेशन के लिए आदर्श। Yup का अधिक घोषणात्मक सिंटैक्स और समृद्ध इकोसिस्टम है।



उदाहरण

import * as yup from 'yup';

const schema = yup.object().shape({ name: yup.string().required('नाम आवश्यक है'), email: yup.string().email('अमान्य email').required(), age: yup.number().positive().integer().min(18, 'आयु कम से कम 18 होनी चाहिए'), tags: yup.array().of(yup.string()).min(1, 'कम से कम एक टैग चुनें'),});

schema.validate({ name: 'इवान', email: 'ivan@example.com', age: 25, tags: ['typescript'],}).then(validData => { console.log('डेटा सही है:', validData);}).catch(err => { console.log('त्रुटि:', err.errors);});


Yup की विशेषताएँ:

  • त्रुटि संदेशों का स्थानीयकरण
  • मांग पर वैलिडेशन (lazy validation)
  • मानों का परिवर्तन (cast)
  • बॉक्स से बाहर Formik के साथ एकीकरण


Joi — शक्तिशाली और सख्त



Joi — वैलिडेटर के विशाल सेट वाली लाइब्रेरी। मूल रूप से Node.js (Hapi.js) के लिए बनाई गई थी, लेकिन TypeScript के साथ भी बढ़िया काम करती है।

<

अनुशंसाएँ