-
Notifications
You must be signed in to change notification settings - Fork 13.3k
Description
Acknowledgement
- I acknowledge that issues using this template may be closed without further explanation at the maintainer's discretion.
Comment
We evaluated the 6.0 RC releases and 6.0 is a moderate impact release for us.
| # | Change | Affects | Release notes | Packages affected | Reported as |
|---|---|---|---|---|---|
| 1 | Deprecation of node module resolution |
Module Resolution | Yes | <1% | |
| 2 | Key mapping in mapped clause cause contextual types to fail | Type Checking | No | <1% | #63225 |
| 3 | Inference produces different result | Type Checking | No | <1% | #63227 |
| 4 | JS emit removes comments | Emit | No | <1% | |
| 5 | API changes hasDefaultLib removed | Emit | Yes | 100% |
Deprecation of node module resolution
All our projects used the node moduleResolution. With the release of 6.0 this was deprecated. The resolution closest to our internal module loader behavior is bundler.
Most of the projects did not have issue migrating, although some did due to two main causes:
- Some import types in declarations switched to using
import('.')instead ofimport('.\index')which we do not support - Some projects used declaration files for
jsonfiles that used the extensionjson.d.tswhich worked fine in node but not with bundler (and using--allowArbitraryExtensionsrequires the extension to bed.json.tswhich we currently do not support)
However these impacted a very small number of packages.
JS emit removes comments
Some comments above JSX elements are removed where before they were preserved. These seem like an improvement:
function Component() {
return (
// Comment is removed in 6.0
<div></div>
)
}Playground Link 6.0
Playground Link 5.0
API changes hasDefaultLib removed
We had a custom implementation of skipLibChecks that only checked declarations authored in the project (usually hand authored) but not those that come from a trusted central source. This relies on setting the hasDefaultLib flag on the declaration source files from the trusted source and using skipDefaultLibChecks. This approach unfortunately no longer works with 6.0 resulting in slower build times for us.
One workaround if overriding isSourceFileDefaultLibrary on the program instance. This seems to work well in 6.0. It would be useful to have a better way to exclude files from type checking in 7.0 where we will not be able to do such monkey patching. Even with the perf improvements in 7.0 it seems wasteful to check files we know are valid.