tigtools

JSON से TypeScript

कोई JSON रिस्पॉन्स या फ़ाइल पेस्ट करें और TypeScript डिक्लेरेशन पाएँ जिन्हें आप अपने कोड में डाल सकते हैं।

आपके ब्राउज़र में चलता है साइन अप की ज़रूरत नहीं

इस रूप में घोषित करें

इस्तेमाल करने का तरीका

  1. JSON को इनपुट बॉक्स में पेस्ट करें, कोई .json फ़ाइल खोलें, या उदाहरण आज़माएँ।
  2. रूट टाइप का नाम सेट करें, उदाहरण के लिए Order या ApiResponse।
  3. interface या type डिक्लेरेशन चुनें और तय करें कि export और readonly जोड़ने हैं या नहीं।
  4. जनरेट किया गया TypeScript कॉपी करें या इसे types.ts के रूप में डाउनलोड करें।

यह कैसे काम करता है

जनरेटर पूरे JSON दस्तावेज़ पर चलता है और हर स्थान पर मिलने वाले मानों के प्रकार दर्ज करता है। प्रत्येक JSON ऑब्जेक्ट अपनी नामित घोषणा बन जाता है। नाम property key से PascalCase में लिखा जाता है, इसलिए “shipping_address” ShippingAddress बन जाता है। किसी array के आइटम का नाम key के एकवचन से बनता है: “items” से Item, “categories” से Category, और जो keys बहुवचन नहीं लगतीं उनमें “Item” प्रत्यय जुड़ता है।

एक ही array के अंदर के सभी ऑब्जेक्ट एक ही interface में मिला दिए जाते हैं। यदि कोई key केवल कुछ में दिखती है, तो उसे “?” से optional चिह्नित किया जाता है। यदि किसी मान का प्रकार अलग-अलग जगहों पर अलग है, तो type एक union होता है, जैसे string | number। null को अपना अलग प्रकार रखा जाता है, इसलिए जो फ़ील्ड कभी-कभी null होती है वह string | null बन जाती है। खाली array unknown[] बन जाती है, क्योंकि उससे अनुमान लगाने के लिए कुछ नहीं होता। बिल्कुल समान properties और types वाले दो ऑब्जेक्ट डुप्लिकेट बनाने के बजाय एक ही interface साझा करते हैं। जो keys मान्य identifiers नहीं हैं, जैसे “first-name”, उन्हें quoted किया जाता है।

परिणाम केवल आपके चिपकाए गए नमूने का वर्णन करता है। यदि वास्तव में कोई फ़ील्ड optional या null हो सकती है, लेकिन आपका नमूना नहीं दिखाता, तो वह required और non-null बन जाएगी, और dates सादे strings के रूप में आती हैं। इन types पर भरोसा करने से पहले अपने API documentation से इनकी जाँच करें।

उदाहरण

API रिस्पॉन्स को टाइप करना

अपने shop API से कोई ऑर्डर Order रूट नाम के साथ चिपकाएँ। आपको Order, Customer, Item और Shipping interfaces मिलते हैं, और Item पर note?: string मिलता है क्योंकि दो items में से केवल एक में note है।

रीड-ओनली कॉन्फ़िगरेशन

config.json चिपकाएँ, “प्रॉपर्टीज़ को रीड-ओनली बनाएँ” को टिक करें और परिणाम को config.d.ts में चिपकाएँ, ताकि config में गलती से होने वाले बदलाव कंपाइलर द्वारा पकड़े जा सकें।

शीर्ष स्तर पर ऐरे

कोई list endpoint [{…}, {…}] लौटाता है। Product रूट नाम के साथ, आउटपुट “export type Product = ProductItem[];” से शुरू होता है और उसके बाद ProductItem interface आता है।

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

आउटपुट में कोई फ़ील्ड वैकल्पिक क्यों है?

क्योंकि उसी ऐरे में कम से कम एक ऑब्जेक्ट में वह कुंजी मौजूद नहीं है। यदि हर ऑब्जेक्ट में वह हो, तो वह आवश्यक होती है। अधिक सटीक वैकल्पिक फ़ील्ड पाने के लिए कई रिकॉर्ड पेस्ट करें।

तारीख को string टाइप क्यों किया जाता है?

JSON में कोई date टाइप नहीं होता, इसलिए तारीखें string के रूप में आती हैं। जनरेटर फ़ॉर्मैट का अनुमान नहीं लगाता। अगर आपका कोड उन्हें Date ऑब्जेक्ट में बदलता है, तो टाइप खुद बदलें।

interface और type में क्या अंतर है?

ऑब्जेक्ट संरचना के लिए ये लगभग समान काम करते हैं। interface को बाद की घोषणाओं से बढ़ाया और मर्ज किया जा सकता है; type एलियस को दोबारा नहीं खोला जा सकता। वही शैली चुनें जो आपका कोडबेस पहले से उपयोग करता है।

क्या यह Zod schema जैसा रनटाइम सत्यापन उत्पन्न कर सकता है?

नहीं। यह केवल TypeScript डिक्लेरेशन बनाता है, जिनकी जाँच कंपाइल समय पर होती है और ये रनटाइम पर डेटा सत्यापित नहीं करते।

गोपनीयता

आपका JSON केवल आपके ब्राउज़र में विश्लेषित किया जाता है। कुछ भी अपलोड, संग्रहीत या एनालिटिक्स में शामिल नहीं किया जाता।