In an October 3 bulletin on the TypeScript 5.3 beta, Microsoft said one use case of import attributes was to provide information about the expected format of a module at runtime. In the example cited, Microsoft said the contents of attributes were not checked by TypeScript because they are host-specific and left alone so that browsers and runtimes can handle them.
Import attributes are an evolution an earlier proposal, import assertions, that were implemented in TypeScript 4.5 in November 2021. The most obvious difference is the use of the
with keyword over the
assert keyword. A less visible difference is that runtimes now can use attributes to guide the resolution and interpretation of import paths, while import assertions only could assert some characteristics after loading a module. Plans call for deprecating the old syntax for import assertion in favor of the proposed standard for import attributes.
The TypeScript 5.3 beta can be accessed via NuGet, or via NPM using the following command:
npm install -D typescript@beta
TypeScript 5.3 is due as a release candidate on October 31. The final production release is scheduled for November 14. Predecessor TypeScript 5.2 was released August 24.
Other new features and improvements coming in TypeScript 5.3:
- TypeScript 5.3 supports the
- Narrowing can be performed based on conditions in each
caseclause with a
- TypeScript 5.3 more closely inspects
superproperty accesses and method calls to see if they correspond to class fields. If they do, a type-checking error will result.
- TypeScript inlay hints now support jumping to the definition of types, making it easier to casually navigate code.
- When running TypeScript via
tsc, the compiler will avoid parsing JSDoc, reducing parsing time and memory usage to store comments along with time spent in garbage collection.
- Consolidation has been done between tsserverlibrary.js and typescript.js.
- TypeScript now detects when the declaration referenced by a
super.property access is a class field and issues an error, thus preventing errors that could occur at runtime.
instanceofoperator. To do this, the value on the right of the operator must have a specific method named by
Symbol.hasInstance. To better model this behavior in
instanceof, TypeScript now checks if such a
[Symbol.Instance]method exists and is declared as a type predicate function. If so, the tested value on the left side of the
instanceofoperator will be narrowed appropriately by that type predicate.
Copyright © 2023 IDG Communications, Inc.