TypeScript delays ESM support for Node.js


TypeScript 4.5, a planned upgrade to Microsoft’s strongly typed language based on JavaScript, will not include support for ECMAScript modules in Node.js 12 after all.

This capability was planned for TypeScript 4.5 when the beta was revealed on October 1, but has been deferred to a future release. Meanwhile, it will be available only under an experimental flag in nightly releases. Concerns around ecosystem readiness and general guidance on using the feature prompted the postponement.

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.

TypeScript 4.5 reached the release candidate stage on November 2 and is slated to be generally available on November 16.

Also new in TypeScript 4.5:

  • A performance regression has been added in --build mode due to excessive realpath calls for JSON files.
  • The release introduces an easy way to override a specific built-in lib to better support the lib setting from node_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 like await in async functions or the .then() method on Promises. 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-level await, meaning developers can use await outside of async 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.

Copyright © 2021 IDG Communications, Inc.



Source link