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

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

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

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

TypeBox क्या है और इसकी आवश्यकता क्यों है?

TypeBox एक शक्तिशाली TypeScript लाइब्रेरी है जो आपको JSON Schema मानक के अनुरूप डेटा स्कीमा परिभाषित करने और उनसे सही स्टैटिक TypeScript टाइप्स निकालने की अनुमति देती है। सरल शब्दों में, यह runtime-वैलिडेशन (जब आपका एप्लिकेशन चल रहा हो और डेटा को तुरंत जांचे) और compile-time टाइप्स (जब TypeScript कोड को चलाने से पहले उसकी सटीकता जांचे) के बीच एक पुल है।

इसकी आवश्यकता क्यों है? आधुनिक वेब डेवलपमेंट में, डेटा अक्सर अविश्वसनीय स्रोतों से आता है: API अनुरोध, वेबसाइट फॉर्म, कॉन्फ़िगरेशन फ़ाइलें। वैलिडेशन के बिना, आपको runtime एरर मिलने का जोखिम होता है जिन्हें पकड़ना मुश्किल है। TypeBox इस समस्या को सुंदर ढंग से हल करता है: आप एक बार स्कीमा का वर्णन करते हैं, और पाते हैं:

  • Runtime-वैलिडेटर — जांचता है कि ऑब्जेक्ट प्रोग्राम चलने के दौरान स्कीमा से मेल खाता है या नहीं।
  • स्टैटिक टाइप — TypeScript स्वचालित रूप से टाइप निकालता है जिसका उपयोग एनोटेशन के लिए किया जा सकता है।
  • JSON Schema — स्कीमा को JSON में सीरियलाइज़ किया जा सकता है और अन्य टूल्स में उपयोग किया जा सकता है (जैसे, UI फॉर्म या डॉक्यूमेंटेशन जनरेट करने के लिए)।

TypeBox इसके लिए आदर्श है: API एंडपॉइंट बनाना जिसमें रिक्वेस्ट बॉडी का वैलिडेशन हो, कॉन्फ़िगरेशन फ़ाइलों के साथ काम करना, फ़ील्ड जांच के साथ जटिल फॉर्म बनाना, और किसी भी परिदृश्य में जहां सभी चरणों में टाइप सुरक्षा महत्वपूर्ण है।

TypeBox की स्थापना (इंस्टॉलेशन)

TypeBox एक Node.js/TypeScript लाइब्रेरी है, इसलिए इसे npm (या yarn/pnpm) के माध्यम से स्थापित किया जाता है।

npm install @sinclair/typebox

स्थापना के बाद, आप इसे अपने प्रोजेक्ट में आयात कर सकते हैं:

import { Type } from '@sinclair/typebox';

वैलिडेशन के लिए आपको एक वैलिडेटर की भी आवश्यकता होगी। TypeBox डिफ़ॉल्ट रूप से इसे शामिल नहीं करता है ताकि डेवलपर को चुनने की स्वतंत्रता मिले। @sinclair/typebox/compiler (अंतर्निहित कंपाइलर) या ajv (लोकप्रिय JSON Schema वैलिडेटर) का उपयोग करने की अनुशंसा की जाती है। आइए कंपाइलर स्थापित करें:

npm install @sinclair/typebox-compiler

या, यदि आप AJV पसंद करते हैं:

npm install ajv ajv-formats

ध्यान दें: लाइब्रेरी का नाम @sinclair/typebox है, न कि केवल typebox। सही स्थापना के लिए यह महत्वपूर्ण है।

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

आइए एक उपयोगकर्ता के लिए एक सरल स्कीमा बनाएं और उसकी जांच करें।

import { Type } from '@sinclair/typebox';
import { TypeCompiler } from '@sinclair/typebox/compiler';

// 1. उपयोगकर्ता स्कीमा परिभाषित करें
const UserSchema = Type.Object({
    id: Type.Number(),
    name: Type.String({ minLength: 2 }),
    email: Type.String({ format: 'email' }),
    age: Type.Optional(Type.Number({ minimum: 0, maximum: 120 })),
});

// 2. वैलिडेशन के लिए कंपाइलर बनाएं
const validator = TypeCompiler.Compile(UserSchema);

// 3. परीक्षण डेटा
const validUser = {
    id: 1,
    name: 'राहुल',
    email: 'rahul@example.com',
    age: 30,
};

const invalidUser = {
    id: 'नंबर-नहीं',
    name: 'A',
    email: 'गलत-ईमेल',
};

// 4. वैलिडेशन
console.log(validator.Check(validUser));   // true
console.log(validator.Check(invalidUser)); // false

// 5. स्टैटिक टाइप प्राप्त करें
type UserType = Static<typeof UserSchema>;
// अब UserType है { id: number; name: string; email: string; age?: number; }

इस उदाहरण में, हमने एक स्कीमा परिभाषित की, इसे एक वैलिडेटर में कंपाइल किया, और दो ऑब्जेक्ट्स की जांच की। age फ़ील्ड के लिए Type.Optional के उपयोग पर ध्यान दें — यह अनुपस्थित हो सकता है। हमने ईमेल प्रारूप की जांच के लिए format: 'email' का भी उपयोग किया।

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

TypeBox स्कीमा बनाने के लिए फ़ंक्शन का एक समृद्ध सेट प्रदान करता है। आइए सबसे महत्वपूर्ण पर नज़र डालें।

1. Type.String()

क्या करता है: स्ट्रिंग टाइप के लिए स्कीमा बनाता है। अनुमति देता है

अनुशंसाएँ