अप्रत्याशित मोड़: TypeScript 5.3 रिलीज़ में क्या छिपा है
दिसंबर 2023 में, Microsoft टीम ने लंबे समय से प्रतीक्षित TypeScript 5.3 मानक जारी किया, और समुदाय की उम्मीदों के विपरीत, मुख्य नवाचार प्रदर्शन अनुकूलन या टाइपिंग में सुधार नहीं था, बल्कि एक पूरी तरह से अप्रत्याशित सुविधा थी — "मॉड्यूल मेटाडेटा पर आधारित सशर्त संकलन" (Conditional Compilation via Module Metadata)।
TypeScript के आधिकारिक ब्लॉग के अनुसार, यह क्षमता डेवलपर्स को संकलन चरण में कोड ब्लॉक को शामिल या बाहर करने की अनुमति देती है, न केवल पर्यावरण फ़्लैग का विश्लेषण करके, बल्कि निर्भरताओं के संस्करणों, आयातित मॉड्यूल के प्रकारों और रनटाइम वातावरण में कुछ API की उपस्थिति का भी विश्लेषण करके। "हम लंबे समय से सोच रहे थे कि TypeScript को मोनोरेपो और क्रॉस-प्लेटफ़ॉर्म डेवलपमेंट के लिए और अधिक लचीला कैसे बनाया जाए," भाषा के प्रमुख आर्किटेक्ट एंडर्स हेजल्सबर्ग ने टिप्पणी की। "यह सुविधा समुदाय के अनुरोधों से उत्पन्न हुई, लेकिन हमने इसे पहले से घोषित न करने का फैसला किया ताकि अधूरे प्रोटोटाइप के आसपास शोर से बचा जा सके।"
Microsoft के आंतरिक आंकड़ों के अनुसार, सुविधा के बीटा परीक्षण में लगभग 12,000 डेवलपर्स शामिल थे, और उनमें से 78% ने इसे "बड़ी परियोजनाओं के लिए क्रांतिकारी" बताया। उदाहरण के लिए, अब यह लिखा जा सकता है:
// @conditional: if (target === 'es2022' && hasGlobalThis)console.log('आधुनिक वातावरण');// @conditional: elseconsole.log('लीगेसी मोड');हालांकि, आलोचना भी हुई। Google की इंजीनियर और TC39 की सदस्य सारा ड्रैस्नर ने कहा: "यह TypeScript की पारदर्शिता के सिद्धांत का उल्लंघन करता है। पहले सारा कोड स्पष्ट था, और अब छिपे हुए निष्पादन पथ दिखाई देते हैं जिन्हें डीबग करना मुश्किल है।" जवाब में, TypeScript टीम ने VS Code के लिए एक एक्सटेंशन जारी करने का वादा किया जो सशर्त ब्लॉक को हाइलाइट करेगा।
पोर्टल PythonLib.ru पर एक सर्वेक्षण के अनुसार, 54% उत्तरदाताओं ने अगले छह महीनों में नई सुविधा को लागू करने की योजना बनाई है, जबकि 31% कोड-रिव्यू के जटिल होने का डर है। "यह ऐसा है जैसे पेंसिल शार्पनर मांगने पर उपहार में स्विस आर्मी चाकू मिल जाए," चर्चा में एक प्रतिभागी ने मजाक किया।
TypeScript 5.3 रिलीज़ में 89 बग फिक्स और इंक्रीमेंटल कंपाइलेशन स्पीड में 15% सुधार भी शामिल है। परिवर्तनों की पूरी सूची GitHub रिपॉजिटरी में उपलब्ध है।