JSON से TypeScript
JSON दस्तावेज़ के नमूने को TypeScript इंटरफ़ेस या टाइप एलियास में बदलें, जिसमें वैकल्पिक फ़ील्ड और यूनियन आपके डेटा से तय होते हैं।
पूरी तरह आपके ब्राउज़र में चलता है
टाइप आपके पेस्ट किए नमूने से निकाले जाते हैं, इसलिए वे उसी नमूने का वर्णन करते हैं, किसी स्कीमा का नहीं: आपके उदाहरण में जो फ़ील्ड स्ट्रिंग है वह कहीं और संख्या हो सकती है। सारी संख्याएँ number हैं, और तारीख़ें string ही रहती हैं। प्रॉपर्टी का क्रम JSON.parse के अनुसार होता है, जो पूर्ण-संख्या वाली कीज़ को पहले रखता है।
JSON से TypeScript कैसे बनाएं
- बॉक्स में JSON रिस्पॉन्स या फ़ाइल पेस्ट करें। ऐरे में कई आइटम होने से नतीजा बेहतर आता है, क्योंकि कुछ आइटमों में छूटे फ़ील्ड वैकल्पिक बन जाते हैं।
- सबसे ऊपर वाले टाइप का नाम तय करें,
interfaceयाtypeचुनें, और ज़रूरत हो तो export, readonly या वैकल्पिक पहचान पर निशान लगाएं। - डिक्लेरेशन कॉपी करें या
.tsफ़ाइल के रूप में डाउनलोड करें। नाम जाँच लें, क्योंकि वे आपकी की के नामों से आते हैं।
JSON नमूने से टाइप निकालना
TypeScript के टाइप डेटा का आकार बताते हैं, और JSON रिस्पॉन्स में आकार पहले से मौजूद होता है: हर की, उसके पीछे के मान का प्रकार, और ऑब्जेक्ट कैसे नेस्ट हैं। कन्वर्टर नमूने से गुज़रकर उस आकार को डिक्लेरेशन के रूप में लिख देता है, ताकि भरोसे के साथ API कॉल करने से पहले आपको चालीस फ़ील्ड हाथ से टाइप न करने पड़ें।
सबसे अहम कदम यह है कि ऐरे के साथ क्या किया जाए। ऑब्जेक्ट के ऐरे का हर आइटम पढ़ा जाता है और उनके आकार मिला दिए जाते हैं: जो की हर आइटम में है वह ज़रूरी रहती है, जो सिर्फ़ कुछ में है वह वैकल्पिक बन जाती है, और जिन मानों का प्रकार अलग है वे यूनियन बन जाते हैं। इसीलिए कई रिकॉर्ड वाला नमूना एक रिकॉर्ड वाले नमूने से कहीं बेहतर टाइप देता है। null मान को गायब की से अलग माना जाता है, क्योंकि फ़ील्ड पढ़ने वाले कोड के लिए दोनों के मतलब अलग हैं।
निकाले गए टाइप शुरुआती बिंदु हैं, अनुबंध नहीं। वे नहीं जान सकते कि कोई स्ट्रिंग हमेशा तीन मानों में से एक होती है, कि कोई संख्या असल में पूर्णांक ID है, या कि आपके सभी उदाहरणों में मौजूद फ़ील्ड प्रोडक्शन में गायब हो सकती है। नतीजा पढ़ें, जो नाम अटपटे आए हों उन्हें बदलें, और जो टाइप मायने रखते हैं उन्हें कसें।
सुझाव
- पहले JSON फ़ॉर्मैट और वैलिडेट करें से जाँच लें कि आपका नमूना सही बना है; यह सिंटैक्स त्रुटि का सटीक वर्ण बताता है।
- YAML कॉन्फ़िग के साथ काम कर रहे हैं? उसे YAML को JSON में बदलें से बदलें और नतीजा यहाँ पेस्ट करें।
- टाइप लिखने से पहले टोकन का पेलोड अंदर से देखना है? JWT डिकोडर से डिकोड करें।
अक्सर पूछे जाने वाले सवाल
यह कैसे तय करता है कि कोई फ़ील्ड वैकल्पिक है?
जब आपके पास ऑब्जेक्ट का ऐरे होता है, तो ऑब्जेक्ट को मिलाकर एक आकार बनाया जाता है। जो की कुछ आइटमों में है पर सभी में नहीं, उसे ? मिलता है। जो की मौजूद है पर कुछ आइटमों में null रखती है, वह वैकल्पिक नहीं होती; वह T | null बन जाती है। अगर आप चाहते हैं कि हर की ज़रूरी रहे, तो वैकल्पिक पहचान बंद कर दें।
नेस्टेड टाइप के नाम कैसे रखे जाते हैं?
हर नेस्टेड ऑब्जेक्ट का नाम उसकी की से PascalCase में बनता है, इसलिए billing_address BillingAddress बन जाता है। ऐरे के लिए, आइटम टाइप अंत का "s" हटा देता है जब की 3 अक्षरों से लंबी हो और ss, us या is पर खत्म न हो: users से User बनता है, जबकि address से AddressItem। अगर दो अलग आकार एक ही नाम चाहें, तो दूसरे पर संख्या लगती है, जैसे User और User2।
एक जैसे आकार वाले ऑब्जेक्ट का क्या होता है?
वे एक ही डिक्लेरेशन साझा करते हैं। अगर billing और shipping दोनों { street, city } रखते हैं, तो आपको एक इंटरफ़ेस मिलता है, जिसका नाम उस पहली जगह के नाम पर होता है जहाँ वह दिखा। एक जैसी कीज़ पर अलग मान-प्रकार वाले दो ऑब्जेक्ट अलग आकार हैं और उन्हें अलग नाम मिलते हैं।
खाली ऐरे का टाइप unknown[] क्यों है?
खाली ऐरे में कोई उदाहरण नहीं होता, इसलिए उसके आइटमों के बारे में कुछ तय नहीं किया जा सकता। unknown[] ईमानदार जवाब है; आइटम का प्रकार पता चलने पर उसे हाथ से बदल लें। मिले-जुले मानों वाला ऐरे यूनियन बन जाता है, जैसे (string | number)[]।
क्या आउटपुट असली API से अलग हो सकता है?
हाँ। नमूना सिर्फ़ वही मान दिखाता है जो उसमें हैं। जो फ़ील्ड आपके नमूने में हमेशा मौजूद है पर प्रोडक्शन में कभी-कभी गायब होती है, वह यहाँ ज़रूरी बनेगी, और enum जैसी स्ट्रिंग सादी string रहेगी। सख़्त वैलिडेशन के लिए स्कीमा इस्तेमाल करें; जल्दी शुरुआत के लिए इस आउटपुट को लेकर उसे ठीक कर लें।
क्या मेरा JSON अपलोड होता है?
नहीं। आप जो पेस्ट करते हैं वह कहीं नहीं भेजा जाता; कन्वर्ज़न आपके ब्राउज़र में चलता है, और पेज लोड होने के बाद आप नेटवर्क से डिस्कनेक्ट भी हो सकते हैं।