JSON से TypeScript क्या है?

JSON to TypeScript, JSON डेटा को TypeScript इंटरफेस और टाइप परिभाषाओं में बदलता है। यह स्ट्रिंग, नंबर, बूलियन, एरे और नेस्टेड ऑब्जेक्ट को पहचानता है, और nullable फ़ील्ड को यूनियन टाइप के साथ वैकल्पिक चिह्नित करता है। API रिस्पॉन्स के टाइप हाथ से लिखने की ज़हमत बचाएं।

जब किसी ऐरे में थोड़े-थोड़े अलग आकार वाले ऑब्जेक्ट हों, तो जनरेटर उन्हें मिला देता है: कुछ रिकॉर्ड्स में जो कुंजियाँ नहीं हैं वे '?' के साथ ऑप्शनल बन जाती हैं। हर नेस्टेड ऑब्जेक्ट को अपना नामधारी इंटरफ़ेस मिलता है (User, UserAddress, UserAddressGeo)। मिश्रित ऐरे (string | number)[] जैसे यूनियन टाइप बनाते हैं। ISO 8601 तारीख स्ट्रिंग्स पर JSDoc टिप्पणी जुड़ जाती है, और जिन स्ट्रिंग फ़ील्ड्स में कई सैम्पल्स में सिर्फ़ चंद तय मानों की पुनरावृत्ति हो उनके लिए सादे string की जगह स्ट्रिंग लिटरल यूनियन टाइप अनुमानित होता है। TypeScript आउटपुट के अलावा वही इनपुट तीन और टैब देता है: मेल खाता Zod स्कीमा, असल जैसे उदाहरण मानों वाला मॉक डेटा, और draft-07 JSON स्कीमा। आप इंटरफ़ेस और टाइप अलियास के बीच बदल सकते हैं, export कीवर्ड चालू कर सकते हैं, कुंजियों को A→Z क्रम में लगा सकते हैं, और camelCase चालू करके snake_case या kebab-case कुंजियों को TypeScript के अनुरूप नामों में बदल सकते हैं।

उपयोग कैसे करें

  1. चरण 1 — एक JSON ऑब्जेक्ट या एरे पेस्ट करें, .json फ़ाइल इनपुट पर खींचकर छोड़ें, या URL से सीधे लाइव JSON ले आएं। टूल संरचना का विश्लेषण करके प्रत्येक फ़ील्ड के लिए TypeScript टाइप का अनुमान लगाता है।
  2. चरण 2 — आउटपुट कस्टमाइज़ करें: रूट इंटरफेस नाम सेट करें, इंटरफेस और टाइप एलियास के बीच चुनें और null हो सकने वाले फ़ील्ड के लिए वैकल्पिक प्रॉपर्टी टॉगल करें।
  3. चरण 3 — आउटपुट कॉपी करें या डाउनलोड करें। चार टैब एक ही सेटिंग साझा करते हैं: TypeScript टाइप, रनटाइम वैलिडेशन के लिए मेल खाता Zod स्कीमा, टेस्ट और Storybook के लिए तैयार मॉक डेटा, और OpenAPI या फ़ॉर्म लाइब्रेरी के लिए draft-07 JSON स्कीमा। सभी नेस्टेड ऑब्जेक्ट को स्वचालित रूप से अपने नामित इंटरफेस मिलते हैं।

कब उपयोग करें

  • जिस API रिस्पॉन्स का OpenAPI/Swagger स्पेक न हो, उसके लिए टाइप बनाना।
  • स्क्रिप्ट में पढ़ी जाने वाली JSON कॉन्फ़िग फ़ाइल (tsconfig.json, package.json) के टाइप झटपट बनाना।
  • थर्ड-पार्टी SDK की रिस्पॉन्स पर सेकंडों में टाइप-वाला रैपर खड़ा करना।

परिणाम

आपका API नेस्टेड पते और प्राथमिकताओं वाला यूज़र ऑब्जेक्ट लौटाता है। JSON रिस्पॉन्स पेस्ट करें, रूट नाम "User" सेट करें और साफ इंटरफेस पाएं: User, UserAddress, UserPreferences — वैकल्पिक फ़ील्ड के लिए string | null जैसे सटीक टाइप सहित।

अक्सर पूछे जाने वाले प्रश्न

जनरेटर कैसे तय करता है कि कौन-से फ़ील्ड ऑप्शनल हैं?
अगर इनपुट एक ऑब्जेक्ट है और 'nullable को ऑप्शनल मानें' चालू है, तो null मान वाले फ़ील्ड पर ? लग जाता है। ऑब्जेक्ट्स के ऐरे में जनरेटर सभी रिकॉर्ड्स की कुंजियों का संघ बनाता है; जो कुंजी कम-से-कम एक रिकॉर्ड में नहीं है, वह ऑप्शनल बन जाती है।
जिन ऐरे के तत्व अलग-अलग आकार के हैं उनका क्या?
तर्क वही है: हर तत्व में मौजूद कुंजियाँ अनिवार्य रहती हैं, कुछ में ही मिलने वाली ऑप्शनल बनती हैं, और प्रिमिटिव टाइप मिश्रित होने पर string | number जैसी यूनियन बनती है। नतीजा एक इंटरफ़ेस जो पूरे ऐरे का वर्णन करता है।
मुझे interface चुनना चाहिए या type एलियास?
interface declaration merging से बढ़ाना आसान है, और API आकार के लिए सामान्य चुनाव है। type एलियास तब बेहतर है जब आगे यूनियन, इंटरसेक्शन या mapped टाइप जोड़ने हों। रनटाइम में कोई फ़र्क नहीं—अपने प्रोजेक्ट की परंपरा से चलें।
आउटपुट में कुछ प्रॉपर्टी नाम उद्धरण में क्यों होते हैं?
अगर कुंजी में ऐसे अक्षर हों जो TypeScript पहचानकर्ता के लिए मान्य नहीं—हाइफ़न, स्पेस, अंक से शुरू, बिंदु—तो जनरेटर उसे उद्धरणों में लपेट देता है। टाइप वैध रहता है और कोड में आप उस फ़ील्ड को obj["weird-key"] की तरह एक्सेस करते हैं।
क्या API रिस्पॉन्स बदलने पर बनाए गए टाइप अपने आप पकड़ लेते हैं?
अगर आप फिर से जनरेट करें तो हाँ। टाइप उस JSON का स्नैपशॉट हैं जो आपने चिपकाया था, ख़ुद नहीं बदलते। आम तरीका है API वर्शन बढ़ने पर टाइप दोबारा बनाना और कोड रिव्यू में डिफ़ देखना।

संबंधित उपकरण