TypeScript Native प्रीव्यू जारी
(devblogs.microsoft.com)- TypeScript compiler को Go-आधारित native रूप में port करने वाले प्रोजेक्ट Corsa का
tsgoप्रीव्यू npm पर जारी किया गया है - मार्च में चर्चा का विषय बने 10x faster TypeScript से जुड़ी फॉलो-अप घोषणा
- मौजूदा
tscकी तुलना में 10 गुना से अधिक speed improvement हासिल किया गया है, और JSX व JSDoc-आधारित JS files भी supported हैं - VS Code के लिए Native Preview extension भी जारी किया गया है, लेकिन autocomplete, find references जैसी सुविधाएं अभी development में हैं
- नई native API और LSP-आधारित language server भी तैयार किए जा रहे हैं, साथ ही Rust-आधारित Node module libsyncrpc को शामिल किया गया है
- कुछ features अभी implemented नहीं हैं, और TypeScript 7 (Corsa) तथा मौजूदा 5.8 (Strada) के बीच स्पष्ट अंतर मौजूद हैं
TypeScript Native Preview का परिचय
- मार्च 2025 में घोषित TypeScript native porting project (Corsa) का प्रीव्यू जारी किया गया है
- मौजूदा JS-आधारित codebase (Strada) की तुलना में Go में लिखा गया
tsgo, parallelism और shared memory के उपयोग से बड़े प्रोजेक्ट्स में 10 गुना से अधिक performance improvement दिखाता है tsgoभविष्य मेंtscकी जगह लेने वाला है, लेकिन फिलहाल इसे अलग npm package के रूप में उपलब्ध कराया गया हैnpm install -D @typescript/native-preview npx tsgo --project ./src/tsconfig.json
VS Code extension features
-
VS Code के लिए “TypeScript (Native Preview)” extension जारी
-
install करने के बाद command palette या settings के ज़रिए इसे enable करना होगा
"typescript.experimental.useTsgo": true -
फिलहाल यह मौजूदा extension पर निर्भर है और इसकी functionality सीमित है, लेकिन इसे लगातार बेहतर किया जाएगा
Release cycle और development roadmap
- यह प्रीव्यू आगे चलकर TypeScript 7 के official version में विकसित किया जाएगा
- इसे nightly builds के रूप में वितरित किया जाता है और यह automatically update होता है
- कुछ features अभी unsupported हैं:
--build,--declaration, lower target emit- editor features: autocomplete, find references, rename आदि
मुख्य updates
Type checking completeness में सुधार
- अधिकांश type checking features का porting पूरा हो चुका है
- JSX और JavaScript + JSDoc type checking का support भी शुरू हो गया है
- कुछ intentional changes और
lib.d.tsके अंतर के कारण errors अलग हो सकते हैं
JSX type checking support
- शुरुआत में JSX सिर्फ parse किया जा सकता था, लेकिन अब पूरी type checking support उपलब्ध है
- उदाहरण: Sentry project में
tscको 72 सेकंड लगते हैं, जबकिtsgo6.7 सेकंड में काम करता है, यानी 10 गुना से अधिक speed improvementtsgo -p . --noEmit --extendedDiagnostics
JavaScript files की type checking
- JSDoc के आधार पर JS files का analysis करने वाली सुविधा को भी native code में फिर से implement किया गया है
- इसे पुराने तरीके की तुलना में अधिक modern और consistent approach के साथ refactor किया गया है
- कुछ पुराने patterns अब पहचाने नहीं जा सकते
Editor features (LSP-आधारित)
- मौजूदा TSServer की जगह LSP-आधारित language server फिर से लिखा जा रहा है
- शुरुआती version में error display, go to definition, hover features उपलब्ध हैं
- हाल ही में autocomplete (completion) feature भी जोड़ा गया है
API development status
- IPC-आधारित API layer implement की जा रही है
- इससे कई भाषाओं से TypeScript process के साथ communication संभव होगा
- Node.js में synchronous communication के लिए Rust-आधारित module libsyncrpc जोड़ा गया है
- API design अभी शुरुआती चरण में है और feedback लिया जा रहा है
मौजूदा TypeScript से अंतर
-
कुछ configuration differences की वजह से मौजूदा projects में errors आ सकते हैं:
- उदाहरण:
--moduleResolution: node→bundlerयाnodenextrecommended{ "compilerOptions": { "module": "preserve", "moduleResolution": "bundler" } }
- उदाहरण:
-
अन्य अंतर:
- JSX emit सिर्फ preserve किया जा सकता है
- declaration emit unsupported है
--buildunsupported है- project references से जुड़ी language service अभी अधूरी है
आगे की योजना
- इस साल के अंत तक
--buildऔर editor की ज़्यादातर core features को implement करने का लक्ष्य है - development progress को blog और nightly releases के ज़रिए लगातार अपडेट किया जाएगा
3 टिप्पणियां
मैं
lspको सीधे build करके इस्तेमाल कर रहा हूँ। इसे Go में बदलने के बाद resources की खपत कम हुई है, यह काफ़ी स्पष्ट रूप से महसूस होता है।आजकल सिर्फ़ js को rust / go में शिफ्ट करके performance बढ़ाना ही ट्रेंड में है
रिफैक्टरिंग करते समय अक्सर tsserver की code parsing धीमी हो जाती थी, जिससे पूरा editor ही फ्रीज़ हो जाता था। उम्मीद है यह जल्दी आए और इस परेशानी से छुटकारा मिले।