Acknowledgement
Comment
We are in the process of evaluating the impact of TS 5.5 beta on Bloomberg code. Below are preliminary findings.
Overall this looks to be a low-impact release. The following changes were observed and seem to either be benign in nature or else improvements:
| Change | Impacts | Release notes | Packages affected |
|---|
| Stricter type-checking of partial objects | Type checker | This may be caused by improved type predicates | 1 |
Improved narrowing of Array.isArray result | Type checker | This may be caused by improved type predicates | 1 |
| Exports are hoisted to the top of a module | Emitted JS | Not announced | Most |
Stricter type-checking of partial objects
We observed one project with a new type error in 5.5-beta, seemingly due to an improvement in type-checking for partials.
A minimal reproduction is here.
Improved narrowing of Array.isArray result
We observed for one project a new type error from trying to compare a string with an array after an Array.isArray check. The generics involved make a minimal reproduction infeasible but the essence of the code is:
if(Array.isArray(foo)){If(foo!=="something")// raises a new error for some complex foo}Exports are hoisted to the top of a module
Module exports seem to be hoisted to the top of modules now. No runtime impact observed.
Object.defineProperty(exports, "__esModule", { value: true });
+exports.foo = foo;
function foo() {
// …
}
-exports.foo = foo;
Acknowledgement
Comment
We are in the process of evaluating the impact of TS 5.5 beta on Bloomberg code. Below are preliminary findings.
Overall this looks to be a low-impact release. The following changes were observed and seem to either be benign in nature or else improvements:
Array.isArrayresultStricter type-checking of partial objects
We observed one project with a new type error in 5.5-beta, seemingly due to an improvement in type-checking for partials.
A minimal reproduction is here.
Improved narrowing of
Array.isArrayresultWe observed for one project a new type error from trying to compare a string with an array after an Array.isArray check. The generics involved make a minimal reproduction infeasible but the essence of the code is:
Exports are hoisted to the top of a module
Module exports seem to be hoisted to the top of modules now. No runtime impact observed.
Object.defineProperty(exports, "__esModule", { value: true }); +exports.foo = foo; function foo() { // … } -exports.foo = foo;