TypeScript .ts फ़ाइल काम नहीं कर रही? "Unknown file extension" त्रुटि का समाधान

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

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

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

परिचय: "आपकी .ts फ़ाइल नहीं खुल रही? आप अकेले नहीं हैं"

\n\n

कल्पना करें: आप TypeScript पर शानदार कोड लिख रहे हैं, फ़ाइल को .ts एक्सटेंशन से सहेजते हैं, कमांड node myfile.ts चलाते हैं... और जवाब में कुछ इस तरह मिलता है: "Unknown file extension ".ts"। परिचित लगता है? यदि आपने Stack Overflow पर देखा है, तो आप जानते हैं कि इस प्रश्न ने हज़ारों व्यूज़ और सैकड़ों टिप्पणियाँ एकत्रित की हैं। यह समस्या पुरानी है, लेकिन आज भी प्रासंगिक है।

\n\n

इस लेख में हम केवल फ़ोरम से उत्तर कॉपी नहीं करेंगे। हम विश्लेषण करेंगे कि यह क्यों होता है, इसे कैसे ठीक करें, और क्या करें ताकि आपको फिर कभी इस त्रुटि का सामना न करना पड़े। आप सीखेंगे कि TypeScript प्रोजेक्ट को सही तरीके से कैसे सेटअप करें, ts-node और tsconfig.json कॉन्फ़िगरेशन का उपयोग कैसे करें। चलिए शुरू करते हैं!

\n\n

"Unknown file extension ".ts"" त्रुटि क्यों होती है?

\n\n

चलिए सीधे मुद्दे पर आते हैं। Node.js डिफ़ॉल्ट रूप से .ts फ़ाइलों को नहीं समझता है। यह केवल .js, .json, .mjs और .cjs को जानता है। जब आप node myfile.ts लिखते हैं, Node.js ईमानदारी से TypeScript कोड को सामान्य JavaScript के रूप में निष्पादित करने का प्रयास करता है, लेकिन ऐसे सिंटैक्स पर अटक जाता है जो उसके लिए अपरिचित है (जैसे टाइप, इंटरफ़ेस, जेनेरिक्स)।

\n\n

परिणामस्वरूप — त्रुटि। लेकिन एक और स्थिति भी है: आप ts-node या tsx का उपयोग कर रहे हैं, लेकिन फिर भी वही संदेश देखते हैं। क्यों? क्योंकि Node.js के आधुनिक संस्करणों (16वें से शुरू) में package.json में एक्सटेंशन की सख्त जाँच जोड़ी गई है, खासकर जब "type": "module" सेट होता है।

\n\n

मुख्य कारण:

\n
    \n
  • सीधे node file.ts चलाना — Node.js TypeScript को तुरंत कंपाइल नहीं कर सकता।
  • \n
  • ts-node या tsx का अभाव — ट्रांसलेशन के लिए कोई टूल नहीं है।
  • \n
  • tsconfig.json का गलत कॉन्फ़िगरेशन — उदाहरण के लिए, मॉड्यूल या target निर्दिष्ट नहीं है।
  • \n
  • package.json से संबंधित समस्याएँ — यदि "type": "module" सेट है, तो ts-node को स्पष्ट रूप से एक्सटेंशन बताने की आवश्यकता हो सकती है।
  • \n
\n\n

समाधान 1: ts-node का उपयोग करें (क्लासिक तरीका)

\n\n

पूर्व-संकलन के बिना TypeScript चलाने का सबसे आसान तरीका ts-node का उपयोग करना है। यह एक पैकेज है जो .ts फ़ाइलों को मेमोरी में कंपाइल करता है और परिणाम Node.js को भेजता है।

\n\n

स्थापना और चलाना

\n
npm install -g ts-node\nts-node myfile.ts
\n\n

यदि आप स्थानीय प्रोजेक्ट का उपयोग कर रहे हैं, तो इसे dev-डिपेंडेंसी के रूप में स्थापित करना बेहतर है:

\n
npm install --save-dev ts-node\nnpx ts-node myfile.ts
\n\n

एक सरल फ़ाइल hello.ts का उदाहरण:

\n
const greet = (name: string): string => {\n    return `नमस्ते, ${name}!`;\n};\n\nconsole.log(greet("दुनिया"));
\n\n

चलाएँ: npx ts-node hello.ts — और कंसोल में "नमस्ते, दुनिया!" दिखाई देगा। यह काम करता है!

\n\n

लेकिन एक बारीकी है: "type": "module"

\n

यदि आपके package.json में "type": "module" निर्दिष्ट है, तो ts-node काम करने से मना कर सकता है। इस मामले में, या तो अस्थायी रूप से इस पंक्ति को हटाएँ, या --esm फ़्लैग का उपयोग करें:

\n
npx ts-node --esm myfile.ts
\n\n

समाधान 2: tsx का उपयोग करें (आधुनिक टूल)

\n\n

tsx ts-node का एक तेज़ विकल्प है, जो esbuild पर आधारित है। यह बिना किसी अतिरिक्त फ़्लैग के ESM के साथ काम करता है।

\n\n

स्थापना:

\n
npm install --save-dev tsx
\n\n

चलाना:

\n
npx tsx myfile.ts
\n\n

TypeScript की आधुनिक क्षमताओं का उपयोग करने का उदाहरण:

\n
// types.ts\nexport interface User {\n    id: number;\n    name: string;\n    email: string;\n}\n\nconst user                

ब्लॉग

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