TypeScript 6.0 डिज़ाइन के कारण ब्रेक कर रहा है

TypeScript 6.0 आ गया है और यह सब कुछ बदल देता है। यह रिलीज़ वर्ज़न 2.x के बाद से सबसे महत्वपूर्ण बदलाव है। यदि आप पुराने (legacy) सेटिंग्स पर निर्भर हैं, तो आपका अगला बिल्ड (build) विफल हो सकता है।

तीन बड़े बदलाव आपके कोड को ब्रेक कर देंगे:

यह क्यों महत्वपूर्ण है:

Strict Mode पहले, आपको strict mode को खुद चुनना (opt in) पड़ता था। अब, यह मानक (standard) है। लगभग 70% कोडबेस में तुरंत 'red builds' दिखाई देंगे। आपको uninitialized properties, implicit any types, और unchecked null values के लिए एरर्स का सामना करना पड़ेगा।

ES5 Support Removal अब आप अपने tsconfig.json में ES5 या ES3 को टारगेट नहीं कर सकते। नया डिफ़ॉल्ट ES2025 है। यदि आपको पुराने ब्राउज़र्स को सपोर्ट करने की आवश्यकता है, तो आपको अपने पाइपलाइन में Babel जैसा कोई अलग टूल जोड़ना होगा।

Module Resolution डिफ़ॉल्ट अब CommonJS नहीं है। अब यह ESNext है। यदि आपका Node.js प्रोजेक्ट implicit CommonJS व्यवहार पर निर्भर है, तो आपको अपने कॉन्फ़िगरेशन में module सेटिंग को स्पष्ट रूप से (explicitly) सेट करना होगा।

अपने पाइपलाइन को तोड़े बिना माइग्रेट कैसे करें:

  1. अपने कॉन्फ़िगरेशन का ऑडिट करें सेटिंग्स को संयोग पर न छोड़ें। अपग्रेड करने से पहले अपने tsconfig.json में strict, target, और module के लिए स्पष्ट मान (explicit values) जोड़ें।

  2. अपना वर्ज़न लॉक करें अपने package.json में अपने TypeScript वर्ज़न को पिन करें। 6.0 पर जाने से पहले अपने मौजूदा वर्ज़न पर अपने वर्तमान बिल्ड का परीक्षण करें।

  3. एक फीचर ब्रांच का उपयोग करें एक नई ब्रांच पर TypeScript 6.0 इंस्टॉल करें। अपने target को ES2025 पर अपडेट करें और अपने module type को स्पष्ट रूप से सेट करें।

  4. प्रकारों (types) को धीरे-धीरे ठीक करें सभी एरर्स देखने के लिए फाइलों को एमिट (emit) किए बिना कंपाइलर चलाएं। सबसे पहले strictNullChecks और implicit any एरर्स पर ध्यान दें।

  5. सब कुछ टेस्ट करें अपना पूरा टेस्ट सुइट चलाएं। TypeScript टाइप एरर्स को पकड़ता है, लेकिन आपके टेस्ट नए स्ट्रिक्टनेस के कारण होने वाली लॉजिक एरर्स को पकड़ते हैं।

TypeScript 6.0 वर्ज़न 7.0 के रीराइट (rewrite) से पहले अंतिम चरण है। वर्ज़न 7.0 एक Go-native कोर का उपयोग करेगा। इसका मतलब है कि legacy सपोर्ट पूरी तरह से खत्म हो जाएगा।

बाद में संकट से बचने के लिए अभी अपने कोडबेस को आधुनिक (modernize) बनाएं।

स्रोत: https://dev.to/davekurian/typescript-60-launches-strict-mode-by-default-and-drops-es5-support-n31