TypeScript 4.1 beta brings template literal types

The template literal type has the same syntax as template literal strings in JavaScript except it is used in type positions

TypeScript 4.1, a planned upgrade to Microsoft’s popular open source language that adds types to JavaScript, is now available as a beta release, featuring template literal types and a multitude of other improvements.

The template literal type has the same syntax as template literal strings in JavaScript except it is used in type positions. When used with concrete literal types, a new string literal type is produced by concatenating the contents.

Unveiled September 18, the TypeScript 4.1 beta also lets developers re-map keys in mapped types with a new as clause. This new clause lets developers leverage features like template literal types to create new property names based on old ones. Keys can be filtered by producing never, saving developers from having to use an extra Omit helper type in some cases.

A release candidate for TypeScript 4.1 is due in October. TypeScript 4.0, the current major release, arrived in August. Other capabilities in TypeScript 4.1 include:

  • With a recursive conditional types capability, some restrictions are eased on conditional types, which are now able to immediately reference themselves within their branches, making it easier to write recursive type aliases. Microsoft cautions that recursive types should be used responsibly and sparingly.
  • A new flag, --noUncheckedIndexedAccess, provides a node where every property access or indexed access is considered potentially undefined. This flag can catch out-of-bounds errors but might be noisy for a lot of code. It is not automatically enabled by the --strict flag.
  • The paths option can be used without baseUrl, to avoid an issue in which poor paths have been used by auto-imports.
  • checkJs now implies allowJs, fixing a situation in which starting a checked JavaScript project required both allowJs and checkJs, which caused friction.
  • The React 17 framework’s jsxcode and jsxscode factory functions are supported through two new options for the jsxcode compiler options react-jsx and react-jsxdev.
  • The JSDoc tag @see now has better support in editors for JavaScript and TypeScript.
  • In a breaking change, members marked as abstract can no longer be marked as async. In another breaking change, resolve parameters are no longer optional in Promise.

The TypeScript 4.1 beta can be accessed through NuGet or NPM:

npm install typescript@beta

Copyright © 2020 IDG Communications, Inc.