Microsoft is nearing the release of TypeScript 5.1, and before the final release has launched the release candidate. The company says that no new features or changes will be made between this and the final release.
In TypeScript 5.1 functions that return “undefined” will no longer be required to have a return statement. Previously the only functions that could have no return statements were those that returned “void” or “any”. Another update is that when a function doesn’t have a return expression and is passed to something that expects a function to return “undefined,” TypeScript will now infer that the function’s return type is “undefined.”
This release also builds upon something that was introduced in TypeScript 4.3, which was that “get” and “set” accessor pairs could specify two different types. Now, it is possible for those types to be completely unrelated, whereas before there was a requirement that the “get” type be a subset of the “set” type.
TypeScript 5.1 decouples type-checking among JSX elements and JSX tag types. The new type, “JSX.ElementType.ElementType” can be referred to to find what the valid tags in JSX element are.
This version of TypeScript also adds support for namespaced attribute names when using JSX, as well as the ability to edit JSX tags in multiple locations automatically.
Another new feature is that the language will be able to provide snippet completions on @param tags, reducing the time spent typing and moving around in the code.
Other improvements include avoiding performing type instantiation for objects that don’t usually reference outer type parameters, negative case checks for union literals, and reduced calls into the scanner when parsing JSDoc comments.
More information about this release can be found in Microsoft’s blog post about it.