TypeScript में JSON इम्पोर्ट करना: पूरी गाइड उदाहरण सहित

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

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

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

TypeScript में JSON इम्पोर्ट करना: आसान तरीका और समाधान

\n\n

अगर आपने कभी TypeScript में import data from './config.json' लिखने की कोशिश की है, तो आप जानते हैं कि कंपाइलर लाल हो जाता है और Cannot find module एरर देता है। यह समस्या बहुत आम है! Stack Overflow पर TypeScript में JSON इम्पोर्ट करने के सवाल सबसे लोकप्रिय हैं। JSON का उपयोग हर जगह होता है — कॉन्फिग, लोकलाइज़ेशन, मॉक डेटा, स्टैटिक लिस्ट। लेकिन TypeScript डिफ़ॉल्ट रूप से JSON फ़ाइलों को सपोर्ट नहीं करता।

\n\n

इस ट्यूटोरियल में हम TypeScript में JSON इम्पोर्ट करने के सभी तरीकों को कवर करेंगे — tsconfig में फ्लैग ऑन करने से लेकर एडवांस टाइपिंग तक। आप सीखेंगे कि TypeScript को JSON के साथ कैसे फ्रेंडली बनाया जाए और फिर कभी वह लाल एरर नहीं दिखेगी। चलिए शुरू करते हैं!

\n\n

TypeScript JSON क्यों नहीं देखता?

\n

कोड में जाने से पहले, कारण समझ लेते हैं। TypeScript JavaScript का एक सुपरसेट है जो स्टैटिक टाइपिंग जोड़ता है। डिफ़ॉल्ट रूप से, TypeScript कंपाइलर उम्मीद करता है कि सभी इम्पोर्ट किए गए मॉड्यूल .ts या .js फ़ाइलें हों। JSON एक मॉड्यूल नहीं, बल्कि डेटा फ़ॉर्मेट है। TypeScript को यह नहीं पता कि इसे कैसे इंटरप्रेट करना है।

\n

समाधान दो तरीकों से है:

\n
    \n
  • कंपाइलर सेटिंग — resolveJsonModule फ्लैग ऑन करके JSON सपोर्ट चालू करें।
  • \n
  • मॉड्यूल डिक्लेरेशन — अगर फ्लैग काम नहीं करता, तो JSON फ़ाइलों के लिए मैन्युअल टाइप डिफाइन करें।
  • \n
\n\n

तरीका 1: resolveJsonModule चालू करें (सही रास्ता)

\n

सबसे आसान और अनुशंसित तरीका है tsconfig.json में resolveJsonModule ऑप्शन जोड़ना। यह फ्लैग TypeScript को बताता है: "दोस्त, JSON को सामान्य मॉड्यूल की तरह इम्पोर्ट करने दे।"

\n
// tsconfig.json\n{\n    "compilerOptions": {\n        "resolveJsonModule": true,\n        "esModuleInterop": true\n    }\n}
\n

इसके बाद आप आराम से लिख सकते हैं:

\n
// config.ts\nimport config from './config.json';\n\nconsole.log(config.apiUrl); // काम करता है!\nconsole.log(config.port);    // काम करता है!
\n

यहाँ क्या हो रहा है? TypeScript ऑटोमैटिकली इम्पोर्ट किए गए JSON के लिए टाइप बनाता है। अगर आपके JSON में apiUrl: string और port: number है, तो TypeScript उनके टाइप निकाल लेगा और उपयोग की जाँच करेगा। बढ़िया, है ना?

\n

लेकिन एक बात: resolveJsonModule के साथ esModuleInterop या allowSyntheticDefaultImports भी चालू करना ज़रूरी है, वरना डिफ़ॉल्ट इम्पोर्ट में एरर आएगी।

\n\n

तरीका 2: नेमड एक्सपोर्ट के साथ इम्पोर्ट

\n

कभी-कभी आपको पूरा JSON नहीं, बल्कि कुछ खास फ़ील्ड चाहिए। TypeScript यह भी सपोर्ट करता है:

\n
import { apiUrl, port } from './config.json';\n\nconsole.log(apiUrl); // स्ट्रिंग\nconsole.log(port);   // नंबर
\n

यह बंडलर्स (Webpack, Vite) में "tree-shaking" की वजह से संभव है, लेकिन TypeScript लेवल पर यह सिर्फ ऑब्जेक्ट डिस्ट्रक्चरिंग है। ध्यान रखें: अगर आप resolveJsonModule का उपयोग कर रहे हैं, तो TypeScript सभी फ़ील्ड के लिए ऑटोमैटिक टाइप बनाता है, इसलिए पूरा ऑब्जेक्ट या उसके हिस्से दोनों इम्पोर्ट कर सकते हैं।

\n\n

तरीका 3: require का उपयोग (पुराने प्रोजेक्ट के लिए)

\n

अगर आप ऐसे प्रोजेक्ट में काम कर रहे हैं जहाँ resolveJsonModule चालू नहीं किया जा सकता (जैसे दूसरी सेटिंग्स से कन्फ्लिक्ट), तो पुराना require इस्तेमाल कर सकते हैं:

\n
const config = require('./config.json');\n\nconsole.log(config.apiUrl); // काम करता है, लेकिन टाइप नहीं मिलते
\n

इस तरीके की समस्या साफ है: आप टाइपिंग खो देते हैं। TypeScript को नहीं पता कि config में क्या है, और वह इसे any टाइप मान लेता है। इससे एरर का रास्ता खुल जाता है। अगर require का उपयोग करना ही है, तो कम से कम टाइप डिक्लेरेशन जोड़ें:

\n
interface Config {\n    apiUrl: string;\n    port: number;                

ब्लॉग

पुस्तक अनुशंसाएँ