Open
Description
Background
In incremental scenarios, we need to understand the "shape" of a module to determine whether its dependencies also need to be checked; however, declaration files are expensive to generate. In cases where --declaration
isn't on, it can be wasteful to spend time on that.
Proposal
In some cases, it can be cheaper just to assume that a change to a module should trigger a re-check of its transitive dependencies - so we could consider the JavaScript output (or maybe even just the TypeScript input) to determine the initial shape, and then "graduate" to using the declaration files if they're referenced often enough.
- figure out the set of dependent modules. If the set of dependencies is "large", then use the
.d.ts
output as the shape; otherwise, use the.js
output - if a module gets changed often enough and it's using
.js
to determine shape, we switch to using its.d.ts
output to determine shape
Originally posted by @DanielRosenwasser in #41219 (comment)