TypeScript 3.5, the latest version of Microsoft’s popular typed superset of JavaScript, is now available in a production release. The update adds optimizations for type-checking, addressing a serious speed regression introduced with TypeScript 3.4.
With TypeScript 3.5, Microsoft’s TypeScript development team focused on optimizing code paths and stripping down certain functionality to make TypeScript faster. Compile times have fallen compared to TypeScript 3.4; code completion and other editor operations should be “snappier” as well, the TypeScript developers noted.
In making these optimizations, the TypeScript team sought to mend a regression introduced in TypeScript 3.4 that could lead to a lot more work for the type-checker and increase type-checking times. The regression was serious because, in addition to leading to longer build times, editor operations for TypeScript and JavaScript users became “unbearably slow.” Those most impacted were developers using the styled-components library.
Other improvements in TypeScript 3.5 include:
- Caching optimizations impacting the
incremental
compiler option that reduce the time for rebuilds. - A
lib.d.ts
declaration file to provide anOmit
helper type. The compiler will use this type to express types created through object rest destructuring on generics. - Improved excess property checks in union types. Excess property checking is intended to find typos when a type is not expecting a specific property. In TypeScript 3.5, the type checker verifies that all provided properties belong to some union member and have the appropriate type.
- When assigning to types with discriminant properties, the language will decompose types into a union of every possible inhabitant
typescript
type. This provides smarter type checking. - Referencing of UMD (Universal Module Definition) global declarations using an
allowUmdGlobalAccess
flag. - Higher-order type inferencing from generic constructors.
- A Smart Select capability that provides an API for editors to expand text selections outward in a manner that is syntactically aware, with the editor knowing constructs to expand out to. Editors do not have to use heuristics such as brace matching. Developers now can expect selection expansion in editors such as Visual Studio Code to simply work.
- A new refactoring extracts types to local aliases.
- TypeScript 3.5 contains some breaking changes, such as generic type parameters constrained to
unknown
.
You can download the TypeScript 3.5 release candidate from NuGet or by using the following NPM command:
npm install -g typescript