𝗡𝗼𝗱𝗲.𝗷𝘀 𝟮𝟰 𝗡𝗮𝘁𝗶𝘃𝗲 𝗧𝘆𝗽𝗲𝗦𝗰𝗿𝗶𝗽𝘁
Node.js 24 आपके TypeScript इस्तेमाल करने के तरीके को बदल देता है। अब आप बिना किसी बिल्ड स्टेप के प्रोडक्शन में .ts फाइलों को चला सकते हैं।
रनटाइम लोड टाइम पर टाइप एनोटेशन (type annotations) को हटा देता है। यह TypeScript को एनोटेटेड JavaScript की तरह मानता है और इसे सीधे निष्पादित (execute) करता है। इससे ट्रांसपाइलेशन (transpilation) या बंडलिंग की आवश्यकता समाप्त हो जाती है।
यह क्यों महत्वपूर्ण है:
- आपको केवल एक ही 'सोर्स ऑफ ट्रुथ' (source of truth) की आवश्यकता होती है।
- आप dist डायरेक्टरीज़ को मैनेज करने की जटिलता को खत्म कर देते हैं।
- आपका डेवलपमेंट एनवायरनमेंट बिल्कुल प्रोडक्शन के समान होता है।
यह कैसे काम करता है: मॉड्यूल लोडर सोर्स टेक्स्ट को इंटरसेप्ट करता है। यह इंटरफेस, टाइप एनोटेशन और केवल टाइप वाले इम्पोर्ट्स (type-only imports) को हटा देता है। बचा हुआ लॉजिक स्टैंडर्ड V8 इंजन पर चलता है। ट्रांसफॉर्म किया गया कोड मॉड्यूल कैश में रहता है, इसलिए यह प्रति मॉड्यूल लोड केवल एक बार होता है।
वे सीमाएं जिन्हें आपको जानना चाहिए: यह आपके बिल्ड पाइपलाइन का पूर्ण विकल्प नहीं है। आपको कुछ कार्यों के लिए अभी भी टूल्स की आवश्यकता होगी।
- कोई टाइप चेकिंग नहीं: रनटाइम त्रुटियों (errors) की जाँच नहीं करता है। बग्स को पकड़ने के लिए आपको अपने CI पाइपलाइन में
tsc --noEmitचलाना होगा। - कोई पाथ एलियास (path aliases) नहीं: यह tsconfig.json पाथ मैपिंग को सपोर्ट नहीं करता है।
- कोई डेकोरेटर्स नहीं: एडवांस ट्रांसफॉर्मेशन के लिए अभी भी esbuild जैसे बंडलर की आवश्यकता होती है।
- कोई रनटाइम सुरक्षा नहीं: हटाए गए टाइप निष्पादन (execution) के समय शून्य सुरक्षा प्रदान करते हैं। डेटा वैलिडेशन के लिए Zod जैसी लाइब्रेरीज़ का उपयोग करें।
इसका उपयोग कब करें: नेटिव TypeScript सरल डिपेंडेंसी ग्राफ वाले माइक्रोसर्विसेज के लिए एकदम सही है। यह मूविंग पार्ट्स को कम करके डिप्लॉयमेंट वेलोसिटी (deployment velocity) को बढ़ाता है।
पारंपरिक बिल्ड्स का पालन कब करें: यदि आपको आक्रामक ऑप्टिमाइज़ेशन, ट्री शेकिंग (tree shaking), या मिनिफिकेशन की आवश्यकता है, तो अपनी वर्तमान पाइपलाइन बनाए रखें। जटिल बिल्ड आवश्यकताओं वाले बड़े एप्लिकेशन को अभी भी ऑप्टिमाइज़्ड JavaScript बंडल्स से अधिक लाभ होगा।
इसे कैसे सेटअप करें: अपने स्टैक ट्रेस (stack traces) को पठनीय रखने के लिए, source maps फ्लैग का उपयोग करें।
उदाहरण कमांड:
node --enable-source-maps src/server.ts
यह आपको अपने मूल TypeScript लाइन नंबरों का उपयोग करके त्रुटियों को डीबग करने की अनुमति देता है।