Comments (2)
Some people are getting some value out of it but I'd guess that the improvements released in v7.9.0 and soon to release in TS5.5 are going to fix some OOMs.
There are footguns with it as well so yeah I'm happy if we remove it.
The reason it never progressed is because essentially TS would only parse a subset of files from another tsconfig. So it meant that in many cases perf/memory was worse!
A .d.ts
file is light - only contains the exported decls and their types - but a .ts
file is heavy as it contains all the imementations AND pulls in more of the dep graph than necessary.
If project A references project B then when we got the program for A then TS would parse and typecheck a subset of B's .ts
files. But unless that "subset" somehow was actually the entirety of B, then when we inevitably parsed an out-of-subset part of B, we would need to get the program for B - meaning we'd re-parse and re-typecheck that subset all over again.
OTOH with .d.ts
files - because you're only parsing a file's exported signature - it's always lightweight and includes the minimum types to define that signature. So the file is light and the graph is light. There's not much type-check work to do because there aren't implementations to check.
Also imagine if there are some node modules used in implementations for B (but not A) - and those module's types aren't used in the exported signatures. With .ts
files we'd need to typecheck the types for that node module twice (once for A then once for B) - but with .d.ts
files we'd only need to do once (once for B).
Finally imagine a highly interdependent project. Eg imagine if you have C, D, and E which all also depend on B. Now you have 4 copies of the subgraph of B.
Essentially it was a dead-end. It kind-of let us share types between programs in specific usecases but in reality it was worse.
We really want to say "this program uses types from this program" to have two isolated but shared things - but TS doesn't support that.
from typescript-eslint.
#9104 was merged into the v8
branch. ✅
from typescript-eslint.
Related Issues (20)
- Docs: Add note of also trying major versions out on downstream ESLint plugins
- Rule proposal: functions should not be `async` unless they `await` HOT 15
- Enhancement: Add v8 projectService name to withoutProjectParserOptions HOT 1
- Enhancement: Remove getTokenAtPosition from type-utils
- Rule proposal: check that function is not returning promise and non-promise HOT 4
- Docs: Add generated documentation on packages exports to the site HOT 3
- Bug: TypeOrValueSpecifier should allow intersection types (no-floating-promises allowForKnownSafePromises)
- Bug: [prefer-optional-chain] conflict with [strict-boolean-expressions] HOT 3
- Document rationale for allowNumber: false in restrict-template-expressions HOT 3
- Bug: Vue + TypeScript project slowdown with v8 alpha HOT 9
- projectService / EXPERIMENTAL_useProjectService gives TS error if not boolean on v8 alpha / v7 HOT 1
- Docs: add an FAQ section about eslint TIMING/`--stats` and type-aware rules being misleading HOT 1
- Bug: `disabled-type-checked` config does not disable project service
- Enhancement: `no-misused-promises` should not flag functions whose contents are wrapped in `try`/`catch` HOT 2
- Base rule extension: nonblock-statement-body-position HOT 1
- Enhancement(typescript-estree): expose ProjectService logs through plugin HOT 2
- Website: Playground is currently broken HOT 2
- Docs: Release note of v7.12.0 contains critical misleading typo HOT 2
- Bug: `[email protected]` has TS error HOT 1
- Bug(website): React key error on internal pages of website
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from typescript-eslint.