TypeScript 7.0 की घोषणा
(devblogs.microsoft.com)- TypeScript 7.0 एक ऐसा रिलीज़ है जिसमें toolchain को Go-आधारित native code में port किया गया है, और यह बड़े projects के full build में आम तौर पर 8–12 गुना speed improvement देता है
- नया
tscपहले की तरह npm केtypescriptpackage से install होता है, और editor support LSP-आधारित language server के ज़रिए VS Code, Visual Studio, WebStorm आदि में काम करता है vscode,sentry,bluesky,playwright,tldrawजैसे codebase में build time काफी घटा, और कुछ environments में कुल memory usage भी कम हुआ- TypeScript 7.0 में अभी stable programming API नहीं है, इसलिए
typescript-eslint, Vue, MDX, Astro, Svelte, Angular template type checking जैसे TypeScript को embed करने वाले tools के लिए TypeScript 6.0 को साथ-साथ चलाना ज़रूरी है - नए defaults और हटाए गए options हैं, इसलिए transition के लिए TypeScript 6.0 के changes पहले apply करना बेहतर है, और TypeScript 7.1 में नई API उपलब्ध कराने की योजना है
Go-आधारित native TypeScript
- TypeScript 7.0 TypeScript toolchain का native port है, जो Go में लिखे नए codebase का उपयोग करता है
- इसे इस तरह port किया गया है कि पुराने codebase की structure और logic को जितना हो सके बनाए रखते हुए दोनों compilers के results की consistency और compatibility मिलाई जा सके
- नया codebase native code speed, shared memory-based multithreading, और कई optimizations के ज़रिए full build में आम तौर पर 8–12 गुना तेज़ नतीजे देता है
- installation पहले की तरह npm से की जा सकती है
npm install -D typescript
- install करने के बाद workspace में नया
tscexecutable इस्तेमाल किया जा सकता है, और इसेnpx tscसे चलाया जा सकता है
development feedback loop को छोटा करना
- TypeScript editor loading, find all references, autocomplete, diagnostics,
tsc,--watchmode जैसे development process के कई चरणों में शामिल होता है - TypeScript 7 इस पूरी process में wait time घटाकर feedback loop को छोटा बनाता है
- VS Code codebase में error वाली file खोलने पर पहला error दिखने में लगने वाला समय लगभग 17.5 सेकंड से घटकर 1.3 सेकंड से कम हो गया, यानी 13 गुना से अधिक तेज़
- editor support LSP-आधारित है, और नया language server multithreading का उपयोग करके concurrent requests को तेज़ी से handle करता है
- VS Code users TypeScript 7 dedicated extension install कर सकते हैं, और आने वाले कुछ हफ्तों में VS Code में भी TypeScript 7 support शामिल होने की योजना है
- Visual Studio का latest version workspace के आधार पर TypeScript 7 को automatically activate करता है
build performance और memory results
- बड़े open source codebase में TypeScript 6 और 7 की तुलना में full build time इस प्रकार है
| codebase | TypeScript 6 | TypeScript 7 | speed improvement |
|---|---|---|---|
| vscode | 125.7 सेकंड | 10.6 सेकंड | 11.9 गुना |
| sentry | 139.8 सेकंड | 15.7 सेकंड | 8.9 गुना |
| bluesky | 24.3 सेकंड | 2.8 सेकंड | 8.7 गुना |
| playwright | 12.8 सेकंड | 1.47 सेकंड | 8.7 गुना |
| tldraw | 11.2 सेकंड | 1.46 सेकंड | 7.7 गुना |
- उसी build में TypeScript 7 ने आम तौर पर कुल memory usage भी कम दिखाया
| codebase | TypeScript 6 | TypeScript 7 | memory change |
|---|---|---|---|
| vscode | 5.2GB | 4.2GB | -18% |
| sentry | 4.9GB | 4.6GB | -6% |
| bluesky | 1.8GB | 1.3GB | -26% |
| playwright | 1.0GB | 0.9GB | -11% |
| tldraw | 0.6GB | 0.5GB | -15% |
real codebase validation और team feedback
- TypeScript project 10 साल से अधिक समय में जमा हुए दसियों हज़ार tests हर
mainbranch commit पर चलाता है - इन tests के अलावा TypeScript 7 को internal और external बड़ी teams के real codebase में भी validate किया गया
- Microsoft के अंदर Loop, Office, PowerBI, Teams, Xbox teams ने TypeScript 7 को validate किया
- बाहर Bloomberg, Canva, Figma, Google, Lattice, Linear, Miro, Notion, Sentry, Slack, Vanta, Vercel, VoidZero आदि ने अपने codebase में test करके feedback दिया
- नए language server ने TypeScript 6.0 की तुलना में failed language server commands को 80% से अधिक, और server crashes को 60% से अधिक घटाया
- वास्तविक team feedback में ये cases शामिल हैं
- Slack ने बताया कि TypeScript 7 से merge queue time 40% घटा, और CI type checking time लगभग 7.5 मिनट से 1.25 मिनट हो गया
- Vanta ने अपने एक बड़े project में maximum 9 गुना build speed improvement देखा
- Microsoft News Services team ने CI build wait time में प्रति माह 400 घंटे बचाए
- Canva ने बताया कि editor में पहला error दिखने में लगने वाला समय लगभग 58 सेकंड से 4.8 सेकंड हो गया
TypeScript 6.0 के साथ parallel execution
- TypeScript 7.0 में अभी API शामिल नहीं है
- TypeScript 7.1 में नई और अलग API देने की योजना है
- तब तक compiler तक programming access की ज़रूरत वाले tools के लिए TypeScript 6.0 और 7.0 को साथ-साथ चलाया जा सकता है
- नया compatibility package
@typescript/typescript6tsc6executable देता है और TypeScript 6.0 API को फिर से export करता है typescript-eslintजैसे tools, जो peer dependency के रूप में सीधेtypescriptimport करते हैं, उनके लिए npm alias इस्तेमाल करने की सलाह है
npm install -D typescript@npm:@typescript/typescript6
- TypeScript 6 API और TypeScript 7 के
tscको साथ इस्तेमाल करने के लिए इस तरह alias रखा जा सकता है
{
"devDependencies": {
"@typescript/native": "npm:typescript@^7.0.2",
"typescript": "npm:@typescript/typescript6@^6.0.2"
}
}
- मौजूदा
@typescript/native-previewpackage TypeScript 7 के नए codebase के nightly builds देता रहा है, और इसके weekly downloads 85 लाख से अधिक थे - आगे nightly builds standard
typescriptpackage केnexttag से फिर शुरू किए जाने की योजना है
npm install -D typescript@next
parallelization control options
-
TypeScript 7.0 parsing, type checking, emit जैसे कई चरणों को parallel में execute करता है
-
parsing और emit को file-by-file independently चलाना आसान है, इसलिए बड़े codebase में ये relatively कम overhead के साथ scale होते हैं
-
नए experimental flags
--checkers,--builders,--singleThreadedparallelization behavior को adjust करते हैं -
--checkers- TypeScript 7.0 fixed number of type checking workers बनाता है, और समान input files के लिए हमेशा काम को समान तरीके से बांटता है ताकि identical results मिलें
- default type checking workers की संख्या 4 है, और इसे
--checkersसे adjust किया जा सकता है - उसी machine पर
--checkers 8इस्तेमाल करने के results इस प्रकार हैं
codebase TypeScript 6 TypeScript 7 --checkers 8speed improvement vscode 125.7 सेकंड 7.51 सेकंड 16.7 गुना sentry 139.8 सेकंड 12.08 सेकंड 11.6 गुना bluesky 24.3 सेकंड 2.01 सेकंड 12.1 गुना playwright 12.8 सेकंड 1.16 सेकंड 11 गुना tldraw 11.2 सेकंड 1.06 सेकंड 10.6 गुना -
--checkersबढ़ाने पर ज्यादा CPU cores का उपयोग करके build तेज हो सकता है, लेकिन आम तौर पर इसके साथ memory usage बढ़ना भी आता है- कम CPU cores और memory वाले CI runner में value कम रखकर अनावश्यक overhead से बचा जा सकता है
--checkers 1type checking को व्यावहारिक रूप से single-threaded बना देता है और duplicate काम हटाता है- दुर्लभ मामलों में
--checkersकी संख्या में बदलाव order-dependent results को उजागर कर सकता है, इसलिए पूरे build environment में fixed checker count तय करना मददगार हो सकता है
-
--builders--builders,--buildचलाते समय एक साथ चल सकने वाले project reference builders की संख्या नियंत्रित करता है- बहुत सारे projects वाले monorepo में यह खास तौर पर मददगार हो सकता है
- value बढ़ाने से build तेज हो सकता है, लेकिन memory usage भी बढ़ सकता है
--checkersके साथ इसका multiplication effect होता है, इसलिए--checkers 4 --builders 4में अधिकतम 16 type checkers एक साथ चल सकते हैं--buildersकी संख्या में बदलाव,--checkersके विपरीत, अलग results नहीं बनाने चाहिए- project reference build में मूल रूप से project dependency graph के कारण bottleneck बनता है
-
--singleThreaded--singleThreadedपूरे compiler को single thread में चलाने के लिए मजबूर करता है- यह debugging, TypeScript 6 और 7 की performance तुलना, external parallel build orchestration, और बहुत सीमित resources वाले environments में उपयोगी हो सकता है
- यह flag type checking workers की संख्या को 1 तक सीमित करने के साथ-साथ parsing और emit को भी single thread में कराता है
नया --watch mode
- TypeScript 7 ने
--watchmode को पूरी तरह से फिर से बनाया है - नया
--watch, Parcel bundler के file-watcher पर आधारित efficient और stable cross-platform file watching सुविधा देता है - Go standard library में built-in file watching API नहीं है, और जिन third-party libraries की समीक्षा की गई उनमें stability, performance, cross-platform support, और build tools integration से जुड़ी समस्याएं थीं
- pure polling तरीका कई operating systems पर काम करता था, लेकिन
node_modulesdependencies ज्यादा होने वाले बड़े projects में इसकी computational cost अधिक थी - TypeScript team ने VS Code में इस्तेमाल होते आए
@parcel/watcherको Go में port किया, और C++ toolchain dependency से बचने के लिए minimal assembly shim का उपयोग किया - यह watcher एक independent package है, और TypeScript 7 के
--watchmode में platforms के across resource usage improvements लाता है
TypeScript 6.0 defaults और compatibility changes
- TypeScript 7.0 को TypeScript 6.0 की type checking और command-line behavior के साथ compatible बनाया गया है
stableTypeOrderingflag on हो औरignoreDeprecationsset न हो, ऐसी स्थिति में TypeScript 6.0 से cleanly compile होने वाला code TypeScript 7.0 में भी उसी तरह compile होना चाहिए- TypeScript 7.0, TypeScript 6.0 के नए defaults अपनाता है, और TypeScript 6.0 में deprecated flags और syntax पर hard error देता है
- मुख्य configuration defaults में बदलाव ये हैं
strictdefaulttrueहैmoduledefaultesnextहैtargetdefault,esnextसे ठीक पहले की current stable ECMAScript version हैnoUncheckedSideEffectImportsdefaulttrueहैlibReplacementdefaultfalseहैstableTypeOrderingdefaulttrueहै और इसे बंद नहीं किया जा सकताrootDirdefault./हैtypesdefault[]है, और पहले वाला behavior["*"]से restore किया जा सकता है
rootDirऔरtypesमें बदलाव सबसे ज्यादा चौंकाने वाले changes माने जा सकते हैं- जिन projects में
tsconfig.json,srcजैसी source directory के बाहर है, उन्हें मौजूदा directory structure बनाए रखने के लिएrootDirexplicitly set करना होगा - specific global declarations पर निर्भर projects को जरूरी
@typespackages कोtypesमें explicitly लिखना होगा
- जिन projects में
{
"compilerOptions": {
"rootDir": "./src"
},
"include": ["./src"]
}
{
"compilerOptions": {
"types": ["node", "jest"]
}
}
हटाए गए या hard error बने behaviors
- TypeScript 7.0 में TypeScript 6.0 में deprecated कई options और syntax अब supported नहीं हैं
- मुख्य items इस प्रकार हैं
target: es5supported नहींdownlevelIterationsupported नहींmoduleResolution: node/node10supported नहीं,nodenextऔरbundlerrecommended हैंmodule: amd, umd, systemjs, nonesupported नहीं, bundler या browser-based module resolution के साथesnextयाpreserverecommended हैंbaseUrlsupported नहीं,pathsकोbaseUrlके बजाय project root के relative paths के आधार पर update किया जा सकता हैmoduleResolution: classicsupported नहीं,bundlerयाnodenextrecommended हैंesModuleInteropऔरallowSyntheticDefaultImportsकोfalseपर set नहीं किया जा सकताalwaysStrictकोtrueमाना जाता है और इसेfalseपर set नहीं किया जा सकता- namespace declarations में
modulekeyword का उपयोग नहीं किया जा सकता - import में
assertskeyword का उपयोग नहीं किया जा सकता; ECMAScript import attribute syntax बदलाव के अनुसारwithका उपयोग करना होगा skipDefaultLibCheckके तहत/// <reference no-default-lib />directive का अब सम्मान नहीं किया जाता- अगर current directory में
tsconfig.jsonहै, तो command-line build में file paths नहीं लिए जा सकते, और explicit--ignoreConfigजरूरी है
template literal types और JavaScript support changes
- TypeScript 7.0, template literal type inference में Unicode code point को ज्यादा natural तरीके से handle करता है
type HeadTail<S> = S extends `${infer Head}${infer Tail}` ? [Head, Tail] : never;
type Result = HeadTail<"😀abc">;
// 7.0: ["😀", "abc"]
// 이전: ["\ud83d", "\ude00abc"]
- पहले JavaScript के UTF-16 indexing behavior का पालन करते हुए
"😀"को surrogate pair के दो हिस्सों में बांटा जाता था - नया behavior
for...ofया[...str]की तरह"😀"को एक unit मानने वाली intuition से मेल खाता है - UTF-16 code unit को जानबूझकर model करने वाले type-level string manipulation के लिए यह breaking change हो सकता है
- JavaScript support को TypeScript files के analysis तरीके के साथ अधिक consistent बनाने के लिए reworked किया गया है
- type positions में values का उपयोग नहीं किया जा सकता और
typeof someValueलिखना होगा @enumको अब special treatment नहीं मिलता- अकेला
?type के रूप में इस्तेमाल नहीं किया जा सकता औरanyलिखना होगा @classfunction को constructor नहीं बनाता;classdeclaration लिखना होगा- postfix
!supported नहीं है - type names को
@typedeftag के अंदर define करना होगा - Closure-style function syntax अब supported नहीं है और TypeScript shorthand syntax का उपयोग करना होगा
- type positions में values का उपयोग नहीं किया जा सकता और
thisaliasing और functionprototypeकी पूरी reassignment जैसे कुछ JavaScript patterns को भी अब special treatment नहीं मिलता- TypeScript 6.0 और 7.0 के differences को
CHANGES.mdमें और विस्तार सेまとめा जा रहा है
एडिटर फीचर्स और सीमाएं
- TypeScript 7.0 में beta के बाद गायब रहे कई editor फीचर्स जोड़े गए हैं
- इनमें auto import, expandable hover, inlay hint, code lens, go-to-source-definition, JSX linked editing, tag completion आदि शामिल हैं
- semantic highlighting, “sort imports”, “remove unused imports” जैसे TypeScript 7.0 beta में छूटे फीचर्स भी शामिल किए गए हैं
- language server की गुणवत्ता के लिए testing और diagnostics infrastructure को फिर से बनाया गया है, और GitHub के प्रमुख TypeScript·JavaScript codebases पर fuzz test किए जा सकते हैं
embedded language workflow की मौजूदा सीमाएं
- Vue, MDX, Astro, Svelte आदि इस्तेमाल करने वाले workflows के अभी TypeScript 7 का लाभ न उठा पाने की संभावना अधिक है
- Angular templates जैसे special template type checking के भी TypeScript 7 का उपयोग न कर पाने की संभावना अधिक है
- मुख्य वजह यह है कि TypeScript 7 अभी stable programming API expose नहीं करता
- Volar जैसे tools, जो TypeScript को अपने compiler और language service में embed करते हैं, फिलहाल TypeScript 6.0 पर निर्भर रहने को मजबूर हैं
- TypeScript team इसे किसी खास समय की limitation के रूप में देखती है, और इन project maintainers के साथ मिलकर TypeScript 7 support सुनिश्चित करने की योजना रखती है
- तब तक, उन scenarios में TypeScript 7 इस्तेमाल करने की सलाह है जहां language server plugin की जरूरत नहीं होती
- Angular projects CLI में तेज project-wide error detection के लिए TypeScript 7 का
tscइस्तेमाल कर सकते हैं, और editor support के लिए साथ में TypeScript 6.0 का उपयोग कर सकते हैं - Vue, MDX, Astro, Svelte आदि को फिलहाल TypeScript 6.0 का उपयोग जारी रखना होगा
- VS Code में “Disable TypeScript 7 Language Server” command से TypeScript 6.0 पर वापस लौटा जा सकता है
आगे की योजना
- TypeScript 7.0 release, TypeScript project में एक साल से अधिक समय से focus रहे native port का अहम milestone है
- 7.0 के बाद, नई features पर काम, usability सुधार, अतिरिक्त performance improvements, और ecosystem के लिए नए API implementation पर वापस जाने की योजना है
- TypeScript 7.0 से पहले की तरह हर 3~4 महीने में new feature release आने की उम्मीद है
- TypeScript 7.1 में community transition में मदद के लिए gaps को भरना और नए API उपलब्ध कराना planned है
2 टिप्पणियां
Hacker News की टिप्पणियाँ
उनके अपने टेस्ट के अनुसार TypeScript 7 की speed improvement इस प्रकार है
ज़िम्मेदारी से migration करते हुए इस स्तर का परिणाम हासिल करने वाली टीम वाकई शानदार है। अच्छा होता अगर Bun भी इससे कुछ सीखता। जिज्ञासा यह है कि tsdown या esbuild जैसे नीचे के tools, जिन्हें TypeScript codebase build करना पड़ता है, उन पर इसका क्या असर होगा, और क्या TS 7 को मौजूदा tsdown के साथ इस्तेमाल किया जा सकता है
--isolatedDeclarationsके उपयोग पर निर्भर करता है, और अगर ऐसा नहीं है तो ब्लॉग के निर्देश के अनुसार TypeScript 6 को साथ में install कर सकते हैंएक समय ऐसा भी था जब लोग बहस करते थे कि types पर लगने वाली मेहनत उसकी वैल्यू के लायक नहीं है। TypeScript की सबसे बड़ी खूबी यह है कि उसने types को mainstream बनाया
उदाहरण के लिए, मैंने कई बार यह सुना है कि Python को इसलिए इस्तेमाल नहीं किया जा सकता क्योंकि उसमें types नहीं हैं, लेकिन यह बात सही नहीं है। Python एक strongly typed language है, और साथ ही एक dynamically typed language भी है।
कुछ भाषाएँ सच में ऐसी भी हैं जिनमें types नहीं होते, या जिन्हें आम तौर पर “stringly typed” कहा जाता है। बचपन में मैंने AREXX के साथ काम किया था, जहाँ हर value string होती थी, चाहे वह संख्या जैसी दिखे, और sed जैसे ज़्यादातर Unix CLI tools को भी इसी तरह देखा जा सकता है। लेकिन types पर होने वाली ज़्यादातर बहस Python जैसी dynamic typing वाली भाषाओं के इर्द-गिर्द ही थी, और बड़े projects के लिए weakly typed या untyped language बेहतर हैं, ऐसा कहते हुए लोग शायद ही कभी दिखे। उल्टा, Python को ग़लती से “type-less” कहकर बड़े projects के लिए अनुपयुक्त बताने वाली बातें बहुत सुनीं, और जब आप खुद Python में बड़े projects बना रहे हों तो यह काफ़ी उलझन भरा लगता है
पहले types के साथ ज़्यादातर exposure C++/Java के माध्यम से था, और खासकर C++ किसी चीज़ का अच्छा उदाहरण कम, बल्कि ज़रूरत से ज़्यादा जटिल भाषा बनाने का उदाहरण ज़्यादा था। जब कोई एक बार types के अच्छे उपयोग को देख लेता है, तो उसे समझाना कहीं आसान हो जाता है
यहाँ सच में प्रभावशाली बात यह है कि मानवता के ज्ञात सबसे उन्नत type system के लिए दो अलग codebases को एक साथ maintain करने वाली यह बेहतरीन टीम। Rust rewrite का भी इंतज़ार है
Rust में development time काफ़ी ज़्यादा लगेगा। Rust, Go से 20% तेज़ हो सकता है, लेकिन TypeScript से Go में जो improvement मिली है, वही अपने आप में काफ़ी बड़ी है। vscode में Go से 11x की बजाय Rust से शायद 14x मिले, लेकिन Go ही इतना फ़र्क पैदा करने के लिए पर्याप्त है
मेरा उद्देश्य TypeScript के type system को कमतर दिखाना नहीं है; वास्तव में यह बेहद दिलचस्प काम है
कुछ साल TypeScript इस्तेमाल करने के बाद, Python में type annotations हाथ से लिखना और
abcजैसी बुनियादी language features को लाना सच में बहुत झंझट भरा लगता हैदिलचस्प है, लेकिन अब Node native रूप से TypeScript type annotations को strip कर देता है, इसलिए मैं लगभग कभी TSC नहीं चलाता। बस तब चलाता हूँ जब कोई बड़ा regression change बना हो और compiler के static output से यह देखना हो कि कौन-कौन सी चीज़ें update नहीं हुईं
browser में जाने वाले frontend code के लिए भी मैं Node की type stripping पर निर्भर करता हूँ
अच्छा लगता है कि JSDoc type syntax पर लगातार ध्यान दिया जा रहा है। personal projects में TypeScript इस्तेमाल करने का यह मेरा पसंदीदा तरीका है। कुछ syntax changes को update करना झंझट भरा हो सकता है, लेकिन ज़्यादातर बदलाव बेहतर दिशा में लगते हैं
[1] https://learn.microsoft.com/en-us/dotnet/csharp/language-ref...
TypeScript की बड़ी परेशानियों में से एक यह है कि प्रोजेक्ट के कुछ हिस्सों के लिए
libऔरtypesजैसी tsconfig setting scope को समायोजित करना मुश्किल हैप्रोजेक्ट वेबऐप है, लेकिन
vite.config.ts, Playwright और unit test की वजह से IDE tooling की तरफ Node types आ जाते हैं। React component में Node API जोड़ दें तो भीtscशिकायत नहीं करता।अभी DOM library और Node library को अलग-थलग करने के लिए project reference spaghetti, ढेर सारे
tsconfig.jsonऔरtsbuildinfooutput files चाहिए, और project reference इस्तेमाल करते हुए type output से बचना भी झंझट हैएक single application में भी nx पसंद है, और shared code को “library” में ले जाता हूँ। non-built library इस्तेमाल करता हूँ, और बड़े प्रोजेक्ट में यह काफ़ी अच्छा है
अभी TypeScript compiler API नहीं है, लेकिन इस पर काम हो रहा है, इसलिए उम्मीद है
memory usage कम होने और performance बहुत बढ़ने वाला graph देखकर लगता है कि server side पर TypeScript की जगह Go इस्तेमाल करना चाहिए, है न?
और आजकल इतने विकल्प होने के बावजूद लोग TS/JS/Python में नए प्रोजेक्ट क्यों शुरू करते हैं, यह मुझे सच में समझ नहीं आता
TypeScript टीम को बधाई। इस पर लंबी पोस्ट या audio में कहने लायक बहुत कुछ है, लेकिन संक्षेप में कहूँ तो JavaScript/TypeScript ecosystem लकड़ी के काम जैसा है
आप सस्ते laminated particle board से Ikea-स्टाइल चीज़ें भी बना सकते हैं। कोड की दुनिया में वह मौलिकता-रहित vibe coding app जैसा होगा।
दूसरी तरफ, बेहतरीन handcrafted furniture या लकड़ी की ऊँची इमारतें भी बनाई जा सकती हैं। जैसे कम उम्र की लकड़ी, custom joints और lamination techniques से fire-resistant beams बनाना। JavaScript/TypeScript ecosystem में भी AI को एक शक्तिशाली machine tool की तरह इस्तेमाल करते हुए कारीगरी के साथ उच्च-स्तरीय नतीजे निकाले जा सकते हैं। अगर आपके पास कुछ बनाने और उसे चलाने की हिम्मत है, तो TypeScript/JavaScript ecosystem को अपनाया जा सकता है
Lobste.rs की राय
वजह समझ में आती है, लेकिन self-hosting compiler से non-self-hosting compiler की ओर जाना दिलचस्प है
आम तौर पर दिशा लगभग हमेशा उलटी होती है, इसलिए यह एक दुर्लभ ट्रेंड है
self-hosting भाषा पर मजबूत दबाव डालता है कि वह compiler बेहतर लिखने वाली भाषा के रूप में विकसित हो, लेकिन यह हमेशा सही दिशा हो, ज़रूरी नहीं
भले ही आप TypeScript में coding न करते हों, VSCode खुद TypeScript में लिखा है, इसलिए सोच रहा हूं कि क्या यह सुधार VSCode की speed पर भी असर डालेगा
या यह सिर्फ TypeScript language extension पर असर डालेगा
यहां जो तेज़ होता है वह केवल वह compiler है जो TypeScript code लेकर उसे JavaScript में बदलता है, और यह प्रक्रिया Microsoft द्वारा VSCode executable distribute करने से पहले build pipeline में होती है
एक संभावित exception यह हो सकता है कि TypeScript LSP server भी तेज़ हो जाए, क्योंकि वह वास्तव में runtime पर TypeScript code parse करता है। हालांकि यह इस बात से अलग है कि VSCode TypeScript में लिखा गया है
tscके बारे में principle है कि type removal जैसी न्यूनतम चीज़ों को छोड़कर उसे process हो रहे code को नहीं छेड़ना चाहिए, इसलिए काफ़ी चीज़ें WONTFIX के रूप में mark हो जाती हैंइसलिए TypeScript से बने tools की performance characteristics लगभग बदलने की उम्मीद नहीं है
व्यक्तिगत तौर पर मिला एक छोटा tip है। जिस project पर मैं अभी काम कर रहा हूं वह TS 5 इस्तेमाल करता है, लेकिन उम्मीद के मुताबिक मैं nvim में उसे इस्तेमाल नहीं करना चाहता था
इसलिए पहले mise से TS 7 install किया, और
node_modules/.binके अंदर mise से install किए गए TS की ओर point करने वालाtsgosymbolic link बनायाक्योंकि nvim-lspconfig अभी भी technical preview के समय वाला पुराना
tsgofilename इस्तेमाल करता है, nvim local TS की बजाय install किया हुआ TS 7 चलाने लगता है