Superstruct का परिचय
Superstruct एक हल्की लेकिन शक्तिशाली लाइब्रेरी है जो TypeScript और JavaScript में डेटा स्ट्रक्चर को वैलिडेट और पार्स करने के लिए उपयोग होती है। यह आपको सरल और अभिव्यंजक "स्कीमा" (structs) के माध्यम से डेटा के अपेक्षित स्वरूप (ऑब्जेक्ट, ऐरे, स्ट्रिंग, नंबर आदि) का वर्णन करने और फिर जांचने की सुविधा देती है कि वास्तविक डेटा इन स्कीमा से मेल खाता है या नहीं।
Zod या Yup जैसी अन्य वैलिडेशन लाइब्रेरीज़ के विपरीत, Superstruct सादगी, प्रदर्शन और न्यूनतमता पर ध्यान केंद्रित करती है। यह स्वचालित रूप से जटिल TypeScript टाइप जनरेट नहीं करती (हालांकि उनके साथ अच्छी तरह काम करती है), बल्कि स्ट्रक्चर का वर्णन करने के लिए एक लचीला और सहज API प्रदान करती है।
Superstruct की आवश्यकता क्यों?
- बाहरी स्रोतों से डेटा वैलिडेशन: API रिस्पॉन्स, फॉर्म डेटा, कॉन्फ़िगरेशन फ़ाइलें, localStorage — हर जगह जहां डेटा अप्रत्याशित प्रारूप में आ सकता है।
- सुरक्षित DTO (डेटा ट्रांसफर ऑब्जेक्ट) बनाना: यह सुनिश्चित करता है कि एप्लिकेशन के विभिन्न लेयर्स के बीच भेजा गया डेटा अपेक्षित संरचना से मेल खाता है।
- पार्सिंग और ट्रांसफॉर्मेशन: Superstruct न केवल जांच सकती है, बल्कि डेटा को बदल भी सकती है (जैसे स्ट्रिंग को नंबर में बदलना)।
- पढ़ने योग्य दस्तावेज़ीकरण: Superstruct स्कीमा स्वयं डेटा के स्वरूप का एक उत्कृष्ट दस्तावेज़ीकरण है।
इंस्टॉलेशन
Superstruct एक npm पैकेज है, इसलिए इसे Node.js पैकेज मैनेजर के माध्यम से इंस्टॉल किया जाता है:
npm install superstruct
या, यदि आप Yarn का उपयोग कर रहे हैं:
yarn add superstruct
इंस्टॉल करने के बाद, आप लाइब्रेरी को अपनी TypeScript फ़ाइल में इम्पोर्ट कर सकते हैं:
import { struct, string, number, object, array, optional, union, literal, enums, size, refine, assert, is, validate } from 'superstruct';
त्वरित शुरुआत
आइए एक उपयोगकर्ता के लिए एक सरल स्कीमा बनाएं और डेटा जांचें।
import { object, string, number, assert } from 'superstruct';
// 1. स्कीमा (struct) परिभाषित करें
const User = object({
id: number(),
name: string(),
email: string(),
});
// 2. वह डेटा जिसे हम जांचना चाहते हैं
const userData = {
id: 1,
name: 'राहुल',
email: 'rahul@example.com',
};
// 3. वैलिडेशन
try {
assert(userData, User);
console.log('डेटा वैलिड है!');
} catch (e) {
console.error('वैलिडेशन त्रुटि:', e.message);
}
// 4. यदि डेटा गलत है, तो assert एक अपवाद फेंकेगा
const badData = { id: 'संख्या नहीं', name: 'सीता' };
try {
assert(badData, User);
} catch (e) {
console.error('त्रुटि:', e.message);
// आउटपुट: Expected a number for `id`, but received: "संख्या नहीं"
}
मुख्य तरीके और फ़ंक्शन
Superstruct स्कीमा बनाने के लिए कई फ़ैक्ट्री प्रदान करती है। यहाँ 10 मुख्य हैं:
1. string()
विवरण: एक स्कीमा बनाता है जो जाँचता है कि मान एक स्ट्रिंग है।
पैरामीटर: कोई नहीं।
import { string, assert } from 'superstruct';
const NameSchema = string();
assert('नमस्ते', NameSchema); // OK
// assert(123, NameSchema); // त्रुटि: Expected a string, but received: 123
2. number()
विवरण: जाँचता है कि मान एक संख्या है (जब तक अन्यथा निर्दिष्ट न हो, NaN भी शामिल है)।
पैरामीटर: कोई नहीं।
import { number, assert } from 'superstruct';
const AgeSchema = number();
assert(30, AgeSchema); // OK
// assert('30', AgeSchema); // त्रुटि
3. boolean()
विवरण: जाँचता है कि मान बूलियन (true या false) है।
पैरामीटर: कोई नहीं।
import { boolean, assert } from 'superstruct';
const IsActiveSchema = boolean();
assert(true, IsActiveSchema); // OK