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

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

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

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

परिचय: Valibot क्या है और इसकी आवश्यकता क्यों है?

Valibot एक आधुनिक, मॉड्यूलर और हल्की लाइब्रेरी है जो TypeScript और JavaScript में डेटा वैलिडेशन के लिए उपयोग की जाती है। Zod या Joi जैसी बड़ी लाइब्रेरीज़ के विपरीत, Valibot को न्यूनतम बंडल आकार और tree-shaking (अप्रयुक्त कोड को हटाने की क्षमता) पर ध्यान केंद्रित करके डिज़ाइन किया गया है।

Valibot का मुख्य दर्शन है - "जितना उपयोग करें, उतना ही भुगतान करें"। अगर आपको केवल एक स्ट्रिंग की न्यूनतम लंबाई जांचनी है, तो आप केवल string और minLength इम्पोर्ट करते हैं, पूरी लाइब्रेरी नहीं। यह Valibot को उन प्रोजेक्ट्स के लिए आदर्श बनाता है जहां अंतिम JavaScript बंडल का आकार महत्वपूर्ण है (जैसे मोबाइल ऐप या कंपोनेंट लाइब्रेरी)।

यह लाइब्रेरी पूरी तरह से टाइप की गई है और TypeScript के साथ उत्कृष्ट एकीकरण प्रदान करती है, वैलिडेशन स्कीमा से स्वचालित रूप से टाइप्स निकालती है। Valibot सरल प्रिमिटिव (स्ट्रिंग, नंबर, बूलियन) से लेकर जटिल संरचनाओं (ऑब्जेक्ट, ऐरे, union-टाइप्स, रिकर्सिव स्कीमा) तक सब कुछ सपोर्ट करता है।

इंस्टॉलेशन

Valibot npm पैकेज मैनेजर के माध्यम से वितरित किया जाता है। इंस्टॉल करने के लिए अपने प्रोजेक्ट के टर्मिनल में निम्न कमांड चलाएं:

npm install valibot

अगर आप yarn उपयोग कर रहे हैं:

yarn add valibot

pnpm के लिए:

pnpm add valibot

इंस्टॉल करने के बाद, आप अपनी TypeScript फ़ाइल में आवश्यक फंक्शन्स इम्पोर्ट कर सकते हैं:

import { string, number, object, minLength, maxValue } from 'valibot';

कोड उदाहरण के साथ त्वरित शुरुआत

आइए एक सरल वैलिडेशन स्कीमा बनाएं जो उपयोगकर्ता रजिस्ट्रेशन फॉर्म के लिए हो। हम नाम, ईमेल और उम्र की जांच करेंगे।

import { object, string, number, email, minLength, maxValue, safeParse } from 'valibot';

// 1. स्कीमा परिभाषित करें
const UserSchema = object({
  name: string([minLength(2, 'नाम कम से कम 2 अक्षर का होना चाहिए')]),
  email: string([email('गलत ईमेल पता')]),
  age: number([maxValue(120, 'उम्र 120 से अधिक नहीं हो सकती')])
});

// 2. जांचने के लिए डेटा
const inputData = {
  name: 'अन्ना',
  email: 'anna@example.com',
  age: 30
};

// 3. वैलिडेट करें
const result = safeParse(UserSchema, inputData);

if (result.success) {
  console.log('डेटा वैलिड है:', result.output);
  // result.output का टाइप { name: string; email: string; age: number; } है
} else {
  console.error('वैलिडेशन त्रुटियाँ:', result.issues);
  // result.issues — त्रुटियों के विवरण वाली ऑब्जेक्ट्स की ऐरे
}

इस उदाहरण में हमने safeParse का उपयोग किया है - एक सुरक्षित तरीका जो एक्सेप्शन नहीं फेंकता, बल्कि success फील्ड वाली ऑब्जेक्ट लौटाता है। अगर वैलिडेशन सफल होता है, तो result.output में सही टाइप्स के साथ जांचा गया डेटा होगा।

मुख्य तरीके और फंक्शन्स

Valibot स्कीमा बनाने के लिए कई फंक्शन्स प्रदान करता है। आइए सबसे महत्वपूर्ण फंक्शन्स को समझें।

1. string()

यह क्या करता है: स्ट्रिंग वैल्यूज़ के वैलिडेशन के लिए स्कीमा बनाता है। अतिरिक्त जांच (लंबाई, पैटर्न आदि) के लिए वैलिडेटर्स की एक वैकल्पिक ऐरे लेता है।

पैरामीटर्स:

  • validations (वैकल्पिक): वैलिडेटर फंक्शन्स की ऐरे, जैसे minLength, maxLength, email, url, regex और अन्य।

उदाहरण:

import { string, minLength, maxLength, email } from 'valibot';

const UsernameSchema = string([minLength(3), maxLength(20)]);
const EmailSchema = string([email()]);

console.log(safeParse(UsernameSchema, 'Jo')); // { success: false, issues: [...] }
console.log(safeParse(EmailSchema, 'test@test.com')); // { success: true, output: 'test@test.com' }

2. number()

यह क्या करता है: संख्यात्मक मानों के वैलिडेशन के लिए स्कीमा बनाता है। पूर्णांक और फ्लोटिंग-पॉइंट संख्याओं को सपोर्ट करता है।

पैरामीटर्स:

  • validations (वैकल्पिक): वैलिडेटर फंक्शन्स की ऐरे, जैसे minValue, maxValue, integer, finite और अन्य।

उदाहरण:

import { number, minValue, maxValue, integer } from 'valibot';

const AgeSchema = number([minValue(0), maxValue(150), integer()]);
const PriceSchema = number([minValue(0.01)]);

console.log(safeParse(AgeSchema, 25)); // { success: true, output: 25 }
console.log(safeParse(PriceSchema, -5)); // { success: false, issues: [...] }

3. object()

यह क्या करता है: ऑब्जेक्ट वैल्यूज़ के वैलिडेशन के लिए स्कीमा बनाता है। आप प्रत्येक कुंजी के लिए स्कीमा परिभाषित कर सकते हैं।

पैरामीटर्स:

  • entries: एक ऑब्जेक्ट जहां कुंजियाँ फील्ड नाम हैं और मान उन फील्ड्स के लिए स्कीमा हैं।
  • validations (वैकल्पिक): पूरे ऑब्जेक्ट के लिए वैलिडेटर फंक्शन्स की ऐरे।

उदाहरण:

import { object, string, number, email } from 'valibot';

const UserSchema = object({
  name: string(),
  email: string([email()]),
  age: number()
});

const result = safeParse(UserSchema, { name: 'राहुल', email: 'rahul@test.com', age: 28 });
console.log(result.success); // true

4. array()

यह क्या करता है: ऐरे वैल्यूज़ के वैलिडेशन के लिए स्कीमा बनाता है। आप ऐरे के प्रत्येक आइटम के लिए स्कीमा परिभाषित कर सकते हैं।

पैरामीटर्स:

  • item: ऐरे के प्रत्येक आइटम के लिए स्कीमा।
  • validations (वैकल्पिक): ऐरे के लिए वैलिडेटर फंक्शन्स की ऐरे, जैसे minLength, maxLength।

उदाहरण:

import { array, string, minLength } from 'valibot';

const TagsSchema = array(string(), [minLength(1, 'कम से कम एक टैग आवश्यक है')]);

console.log(safeParse(TagsSchema, ['javascript', 'typescript'])); // { success: true, output: ['javascript', 'typescript'] }
console.log(safeParse(TagsSchema, [])); // { success: false, issues: [...] }

5. union()

यह क्या करता है: एक यूनियन स्कीमा बनाता है जो कई स्कीमाओं में से किसी एक से मेल खाने वाले मानों को स्वीकार करता है।

पैरामीटर्स:

  • schemas: स्कीमाओं की एक ऐरे।

उदाहरण:

import { union, string, number } from 'valibot';

const IdSchema = union([string(), number()]);

console.log(safeParse(IdSchema, 'abc123')); // { success: true, output: 'abc123' }
console.log(safeParse(IdSchema, 456)); // { success: true, output: 456 }
console.log(safeParse(IdSchema, true)); // { success: false, issues: [...] }

6. optional()

यह क्या करता है: एक स्कीमा को वैकल्पिक बनाता है, जिसका अर्थ है कि मान undefined भी हो सकता है।

पैरामीटर्स:

  • schema: वह स्कीमा जिसे वैकल्पिक बनाना है।

उदाहरण:

import { optional, string } from 'valibot';

const NicknameSchema = optional(string());

console.log(safeParse(NicknameSchema, 'राज')); // { success: true, output: 'राज' }
console.log(safeParse(NicknameSchema, undefined)); // { success: true, output: undefined }

7. nullable()

यह क्या करता है: एक स्कीमा को null मान स्वीकार करने की अनुमति देता है।

पैरामीटर्स:

  • schema: वह स्कीमा जिसे nullable बनाना है।

उदाहरण:

import { nullable, string } from 'valibot';

const MiddleNameSchema = nullable(string());

console.log(safeParse(MiddleNameSchema, 'कुमार')); // { success: true, output: 'कुमार' }
console.log(safeParse(MiddleNameSchema, null)); // { success: true, output: null }

8. record()

यह क्या करता है: एक रिकॉर्ड स्कीमा बनाता है जहां कुंजियाँ और मान दोनों के लिए स्कीमा परिभाषित होते हैं।

पैरामीटर्स:

  • key: कुंजियों के लिए स्कीमा।
  • value: मानों के लिए स्कीमा।

उदाहरण:

import { record, string, number } from 'valibot';

const ScoresSchema = record(string(), number());

console.log(safeParse(ScoresSchema, { 'गणित': 95, 'विज्ञान': 88 })); // { success: true, output: { 'गणित': 95, 'विज्ञान': 88 } }

9. pick()

यह क्या करता है: किसी ऑब्जेक्ट स्कीमा से केवल चुनिंदा फील्ड्स को चुनता है।

पैरामीटर्स:

  • schema: मूल ऑब्जेक्ट स्कीमा।
  • keys: चुनने के लिए कुंजियों की ऐरे।

उदाहरण:

import { object, string, number, pick } from 'valibot';

const FullUserSchema = object({
  name: string(),
  email: string(),
  age: number()
});

const PublicUserSchema = pick(FullUserSchema, ['name', 'age']);

console.log(safeParse(PublicUserSchema, { name: 'सीता', age: 25 })); // { success: true }

10. omit()

यह क्या करता है: किसी ऑब्जेक्ट स्कीमा से कुछ फील्ड्स को हटाता है।

पैरामीटर्स:

  • schema: मूल ऑब्जेक्ट स्कीमा।
  • keys: हटाने के लिए कुंजियों की ऐरे।

उदाहरण:

import { object, string, number, omit } from 'valibot';

const FullUserSchema = object({
  name: string(),
  email: string(),
  password: string()
});

const SafeUserSchema = omit(FullUserSchema, ['password']);

console.log(safeParse(SafeUserSchema, { name: 'राम', email: 'ram@test.com' })); // { success: true }

निष्कर्ष

Valibot एक शक्तिशाली, हल्की और लचीली वैलिडेशन लाइब्रेरी है जो TypeScript और JavaScript डेवलपर्स के लिए आदर्श है। इसकी मॉड्यूलर डिज़ाइन और tree-shaking सपोर्ट इसे बड़े प्रोजेक्ट्स के लिए भी उपयुक्त बनाता है जहां बंडल आकार मायने रखता है।

चाहे आप एक सरल फॉर्म वैलिडेशन कर रहे हों या जटिल API डेटा संरचनाओं को मान्य कर रहे हों, Valibot आपको सुरक्षित, टाइप-सेफ और कुशल कोड लिखने में मदद करता है।

अपने अगले TypeScript प्रोजेक्ट में Valibot आज़माएं और अनुभव करें कि कैसे यह आपके डेटा वैलिडेशन को सरल और अधिक विश्वसनीय बनाता है!

अनुशंसाएँ