परिचय: "आपकी .ts फ़ाइल नहीं खुल रही? आप अकेले नहीं हैं"
\n\nकल्पना करें: आप TypeScript पर शानदार कोड लिख रहे हैं, फ़ाइल को .ts एक्सटेंशन से सहेजते हैं, कमांड node myfile.ts चलाते हैं... और जवाब में कुछ इस तरह मिलता है: "Unknown file extension ".ts"। परिचित लगता है? यदि आपने Stack Overflow पर देखा है, तो आप जानते हैं कि इस प्रश्न ने हज़ारों व्यूज़ और सैकड़ों टिप्पणियाँ एकत्रित की हैं। यह समस्या पुरानी है, लेकिन आज भी प्रासंगिक है।
इस लेख में हम केवल फ़ोरम से उत्तर कॉपी नहीं करेंगे। हम विश्लेषण करेंगे कि यह क्यों होता है, इसे कैसे ठीक करें, और क्या करें ताकि आपको फिर कभी इस त्रुटि का सामना न करना पड़े। आप सीखेंगे कि TypeScript प्रोजेक्ट को सही तरीके से कैसे सेटअप करें, ts-node और tsconfig.json कॉन्फ़िगरेशन का उपयोग कैसे करें। चलिए शुरू करते हैं!
"Unknown file extension ".ts"" त्रुटि क्यों होती है?
\n\nचलिए सीधे मुद्दे पर आते हैं। Node.js डिफ़ॉल्ट रूप से .ts फ़ाइलों को नहीं समझता है। यह केवल .js, .json, .mjs और .cjs को जानता है। जब आप node myfile.ts लिखते हैं, Node.js ईमानदारी से TypeScript कोड को सामान्य JavaScript के रूप में निष्पादित करने का प्रयास करता है, लेकिन ऐसे सिंटैक्स पर अटक जाता है जो उसके लिए अपरिचित है (जैसे टाइप, इंटरफ़ेस, जेनेरिक्स)।
परिणामस्वरूप — त्रुटि। लेकिन एक और स्थिति भी है: आप ts-node या tsx का उपयोग कर रहे हैं, लेकिन फिर भी वही संदेश देखते हैं। क्यों? क्योंकि Node.js के आधुनिक संस्करणों (16वें से शुरू) में package.json में एक्सटेंशन की सख्त जाँच जोड़ी गई है, खासकर जब "type": "module" सेट होता है।
मुख्य कारण:
\n- \n
- सीधे
node file.tsचलाना — Node.js TypeScript को तुरंत कंपाइल नहीं कर सकता। \n ts-nodeयाtsxका अभाव — ट्रांसलेशन के लिए कोई टूल नहीं है। \n tsconfig.jsonका गलत कॉन्फ़िगरेशन — उदाहरण के लिए, मॉड्यूल या target निर्दिष्ट नहीं है। \n package.jsonसे संबंधित समस्याएँ — यदि"type": "module"सेट है, तोts-nodeको स्पष्ट रूप से एक्सटेंशन बताने की आवश्यकता हो सकती है। \n
समाधान 1: ts-node का उपयोग करें (क्लासिक तरीका)
\n\nपूर्व-संकलन के बिना TypeScript चलाने का सबसे आसान तरीका ts-node का उपयोग करना है। यह एक पैकेज है जो .ts फ़ाइलों को मेमोरी में कंपाइल करता है और परिणाम Node.js को भेजता है।
स्थापना और चलाना
\nnpm install -g ts-node\nts-node myfile.ts\n\nयदि आप स्थानीय प्रोजेक्ट का उपयोग कर रहे हैं, तो इसे dev-डिपेंडेंसी के रूप में स्थापित करना बेहतर है:
\nnpm install --save-dev ts-node\nnpx ts-node myfile.ts\n\nएक सरल फ़ाइल hello.ts का उदाहरण:
const greet = (name: string): string => {\n return `नमस्ते, ${name}!`;\n};\n\nconsole.log(greet("दुनिया"));\n\nचलाएँ: npx ts-node hello.ts — और कंसोल में "नमस्ते, दुनिया!" दिखाई देगा। यह काम करता है!
लेकिन एक बारीकी है: "type": "module"
\nयदि आपके package.json में "type": "module" निर्दिष्ट है, तो ts-node काम करने से मना कर सकता है। इस मामले में, या तो अस्थायी रूप से इस पंक्ति को हटाएँ, या --esm फ़्लैग का उपयोग करें:
npx ts-node --esm myfile.ts\n\nसमाधान 2: tsx का उपयोग करें (आधुनिक टूल)
\n\ntsx ts-node का एक तेज़ विकल्प है, जो esbuild पर आधारित है। यह बिना किसी अतिरिक्त फ़्लैग के ESM के साथ काम करता है।
स्थापना:
\nnpm install --save-dev tsx\n\nचलाना:
\nnpx tsx myfile.ts\n\nTypeScript की आधुनिक क्षमताओं का उपयोग करने का उदाहरण:
\n// types.ts\nexport interface User {\n id: number;\n name: string;\n email: string;\n}\n\nconst user