TypeScript adds ESM support for Node.js
TypeScript 4.5, a planned upgrade to Microsoft’s strongly typed language based on JavaScript, is set to support ECMAScript modules in Node.js.
TypeScript 4.5 became available as a beta release on October 1. Node.js, which can work with TypeScript, has been working to support ECMAScript modules (ESM), which enable packaging of JavaScript code for reuse. This work has been difficult because Node.js was built on a different module system, CommonJS, Microsoft said. But ESM was largely implemented in Node.js 12. With ESM support in mind, TypeScript 4.5 offers two new module
settings, node12
and nodenext
.
[ Also on InfoWorld: 7 tools transforming JavaScript development ]
TypeScript 4.5 is due to reach the release candidate stage on November 2 and to be generally available on November 16. The beta is accessible via NuGet or NPM: npm install typescript@betacode
.
Also new in TypeScript 4.5:
- The release introduces an easy way to override a specific built-in
lib
to better support thelib
setting fromnode_modules
. - To improve speed, a system-native implementation of the Node.js
realpathSync
function is now leveraged on all operating systems. Previously, it was limited to Linux. Now it has been adapted to OSes that are typically case-sensitve, like Windows and MacOS. - Snippet completions are offered for JSX attributes.
- An ECMAScript proposal for checking whether an object has a private field is supported. Another ECMAScript proposal, for import assertions, also is supported. This is a syntax used by runtimes to ensure that an import has an expected format.
- Better editor support is offered for unresolved types.
- A utility type, the
Awaited
type, is introduced for modeling operations likeawait
inasync
functions or the.then()
method onPromises
.Awaited
can be useful for modeling existing APIs. - Values that have template strings can be narrowed. Also, template strings are recognized as discriminants.
- A new
module
setting,es2022
, is supported, providing top-levelawait
, meaning developers can useawait
outside ofasync
functions. - Some tail-recursion elimination is performed on conditional types.
- Part of TypeScript 4.5 allows a
type
modifier on individual named imports.
TypeScript builds on JavaScript by adding syntax for static types. The previous TypeScript release, TypeScript 4.4, became generally available in August.