TypeStack/class-validator TypeScript: पूरी गाइड उदाहरणों के साथ
1. यह क्या है और क्यों ज़रूरी है
TypeStack/class-validator लाइब्रेरी TypeScript और JavaScript में डेटा वैलिडेशन के लिए एक शक्तिशाली टूल है, जो डेकोरेटर पर आधारित है। यह डेवलपर्स को क्लास के अंदर ही प्रॉपर्टी डेकोरेटर का उपयोग करके वैलिडेशन नियमों को परिभाषित करने की सुविधा देता है। इससे कोड अधिक पढ़ने योग्य, स्व-दस्तावेजीकरण वाला बनता है और इनकमिंग डेटा को प्रोसेस करना बहुत आसान हो जाता है, खासकर REST API, फॉर्म या डेटा के किसी भी अन्य स्रोत के साथ काम करते समय।
यह क्यों ज़रूरी है? आधुनिक वेब डेवलपमेंट में डेटा कई स्रोतों से आता है: HTTP रिक्वेस्ट, कॉन्फ़िगरेशन फ़ाइलें, डेटाबेस। विश्वसनीय वैलिडेशन के बिना यह डेटा रनटाइम एरर, सुरक्षा कमज़ोरियाँ या एप्लिकेशन के गलत व्यवहार का कारण बन सकता है। class-validator इस समस्या को हल करता है, डेटा जाँचने का एक डिक्लेरेटिव तरीका प्रदान करके। बड़े-बड़े if-else स्ट्रक्चर लिखने के बजाय, आप बस क्लास प्रॉपर्टीज़ में डेकोरेटर जोड़ते हैं, और लाइब्रेरी अपने आप उन्हें दिए गए नियमों के अनुसार चेक करती है।
एक और मुख्य लाभ TypeScript के साथ गहरा एकीकरण है। डेकोरेटर न केवल डेटा को वैलिडेट करते हैं बल्कि उनके टाइप भी परिभाषित करते हैं, जिससे डेवलपमेंट प्रक्रिया अधिक सुरक्षित और अनुमानित बनती है। लाइब्रेरी कई बिल्ट-इन वैलिडेटर सपोर्ट करती है (स्ट्रिंग लंबाई की सरल जाँच से लेकर जटिल रेगुलर एक्सप्रेशन तक) और आसानी से अपने खुद के कस्टम वैलिडेटर बनाने की सुविधा देती है।
2. इंस्टॉलेशन
class-validator लाइब्रेरी और इसकी अनिवार्य डिपेंडेंसी reflect-metadata को इंस्टॉल करने के लिए अपने प्रोजेक्ट के टर्मिनल में निम्न कमांड चलाएँ:
npm install class-validator reflect-metadata
इंस्टॉल करने के बाद, डेकोरेटर के सही काम के लिए अपनी tsconfig.json फ़ाइल में निम्नलिखित विकल्पों को शामिल करना सुनिश्चित करें:
{
"compilerOptions": {
"experimentalDecorators": true,
"emitDecoratorMetadata": true
}
}
साथ ही, अपने एप्लिकेशन की शुरुआत में (आमतौर पर मुख्य फ़ाइल index.ts या app.ts में) reflect-metadata को इम्पोर्ट करना न भूलें:
import "reflect-metadata";
3. त्वरित शुरुआत
आइए एक न्यूनतम कार्यशील उदाहरण देखें। फ़ील्ड वैलिडेशन के साथ एक यूज़र क्लास बनाते हैं:
import "reflect-metadata";
import { validate, IsString, IsEmail, MinLength } from "class-validator";
class User {
@IsString()
@MinLength(3, { message: "नाम में कम से कम 3 अक्षर होने चाहिए" })
name: string;
@IsEmail({}, { message: "गलत ईमेल पता" })
email: string;
constructor(name: string, email: string) {
this.name = name;
this.email = email;
}
}
async function main() {
const user = new User("Jo", "invalid-email");
const errors = await validate(user);
if (errors.length > 0) {
console.log("वैलिडेशन त्रुटियाँ:");
errors.forEach(error => {
console.log(`- ${error.property}: ${Object.values(error.constraints).join(", ")}`);
});
} else {
console.log("वैलिडेशन सफलतापूर्वक पास!");
}
}
main();
// आउटपुट:
// वैलिडेशन त्रुटियाँ:
// - name: नाम में कम से कम 3 अक्षर होने चाहिए
// - email: गलत ईमेल पता
इस उदाहरण में हमने User क्लास बनाया, उसकी प्रॉपर्टीज़ में डेकोरेटर जोड़े और validate() फंक्शन को कॉल किया। यदि डेटा नियमों के अनुसार नहीं है तो यह एरर की एक सूची लौटाता है।
4. मुख्य तरीके/फंक्शन/क्लास
लाइब्रेरी के 8 मुख्य फंक्शन और क्लास देखते हैं
पुस्तकालय में भी
जावा में भू-स्थान और मानचित्र: लाइब्रेरीज़, API और कोड उदाहरण
C# (.NET) में CSV के साथ कार्य: लाइब्रेरीज़ और उदाहरण
Go (Golang) में रिएक्टिव प्रोग्रामिंग: लाइब्रेरीज़, पैटर्न और उदाहरण
Rust में HTML पार्सिंग: वेब-स्क्रैपिंग के लिए लाइब्रेरीज़ और उदाहरण