This document outlines our focused tasks for TypeScript 3.9, as well as some of the discussion that explains how/why we prioritized certain work items. Nothing is set in stone, but we will strive to complete them in a reasonable timeframe.
Date | Event
--------------|------------------------
February 20th | TypeScript 3.8 Release (past)
March 20th | Create 3.9 Beta (3.9.0) Build for Testing
March 24th | TypeScript 3.9 Beta Release
April 24th | Create 3.9 RC (3.9.1) Build for Testing
April 28th | TypeScript 3.9 RC Release
May 8th | Create 3.9 Final (3.9.2) Build for Testing
May 12th | TypeScript 3.9 Final Release 馃殌
--build mode for project referencesThanks
The聽current awaited type聽operator聽PR is聽https://github.com/microsoft/TypeScript/pull/35998.
https://github.com/microsoft/TypeScript/pull/35392
https://github.com/microsoft/TypeScript/issues/20469
This issue has not been resolved for a long time since the question was asked.
Support JSX fragments with jsxFragFactory compiler option and @jsxFrag pragma
Is it possible to support mjs/cjs in ts 3.10?
@xiaoxiangmoe does https://github.com/microsoft/TypeScript/pull/35148 satisfy it? 馃
@typescript-bot create release-3.9
Heya @DanielRosenwasser, I've started to create the release-3.9 branch for you. Here's the link to my best guess at the log.
https://github.com/microsoft/TypeScript/pull/37510 should聽probably be聽merged聽too.
It鈥檚聽the聽only part聽of聽https://github.com/microsoft/TypeScript/pull/36368 that聽wasn鈥檛聽included in聽https://github.com/microsoft/TypeScript/pull/35998.
For those following the issue and the listed features, we noticed that a lot of code was being impacted by awaited and we've decided that we need to back out the feature to ensure that we can roll it out more smoothly later on. Had we caught some of the errors sooner (see #37560), we might've gotten a better hint around some more of the impact, but even then we've just hit more stuff doing offhand experiments with public repos. Since the PR, we've seen
And we still have some fixes to awaited in flight:
We considered keeping awaited in and pulling it back out if the issues seem insurmountable, but this seems like an unfair amount of churn to impose on users, especially since the fixes aren't necessarily backwards-compatible. Asking users to use awaited and then remove it if we think it's not working out would be a waste of time for everyone.
We also considered pushing back the beta another week. Adding delays for a feature isn't something we want to start doing, especially because "fixing" a feature takes an indefinite amount of time with enough unknown unknowns. In the worst-case scenario, a bunch of fixes followed by a total rollback of a feature would delay our releases even further.
So the course of action we're taking is:
awaited type for a later version.I think this is the most ideal outcome. By not rushing this feature, we'll have a much better handle on it and its impact. 3.9 beta won't be delayed any further, and we'll still have a reasonable amount of time for feedback before the RC for other features.
I聽think that聽4.0 might聽be a聽better聽version for聽awaited, given聽that it聽has聽backwards compatibility聽issues.
I think it's reasonable to request people to change the T to awaited T. TypeScript is inferring it correctly
Type system shouldn't implicitly create awaited types by default. Creating awaited types by Promise functions and methods and async/await operators obviously breaks existing code. So you should provide the stricter type inference and the lib.d.ts using awaited operator only when a flag is enabled.
// strictAwaitedTypes: false
// lib.es5.d.ts
then((value: T) => awaited T | T): Promise<T>;
// strictAwaitedTypes: true
// lib.es5.awaited.d.ts
then((value: awaited T) => awaited T | T): Promise<awaited T>;
// strictAwaitedTypes: false
await value; // Returns T
// strictAwaitedTypes: true
await value; // Returns awaited T
@typescript-bot sync release-3.9
Heya @DanielRosenwasser, I've started to sync release-3.9 with master for you. Here's the link to my best guess at the log.
Had to do it manually. 馃槩 Ah well.
@typescript-bot bump release-3.9
Heya @DanielRosenwasser, I've started to update the version number on release-3.9 to 3.9.1-rc for you. Here's the link to my best guess at the log.
@typescript-bot bump release-3.9 and LKG
Heya @DanielRosenwasser, I've started to update the version number on release-3.9 to 3.9.2 for you. Here's the link to my best guess at the log.
@typescript-bot bump release-3.9 and LKG
Heya @DanielRosenwasser, I've started to update the version number on release-3.9 to 3.9.3 for you. Here's the link to my best guess at the log.
@typescript-bot bump release-3.9 and LKG
Heya @DanielRosenwasser, I've started to update the version number on release-3.9 to 3.9.4 for you. Here's the link to my best guess at the log.
I bungled the publish and don't want to mess around with things locally.
@typescript-bot bump release-3.9 and LKG
Heya @DanielRosenwasser, I've started to update the version number on release-3.9 to 3.9.5 for you. Here's the link to my best guess at the log.
@typescript-bot bump release-3.9 and LKG
Heya @DanielRosenwasser, I've started to update the version number on release-3.9 to 3.9.6 for you. Here's the link to my best guess at the log.
@typescript-bot bump release-3.9 and LKG
Heya @DanielRosenwasser, I've started to update the version number on release-3.9 to 3.9.7 for you. Here's the link to my best guess at the log.
Most helpful comment
https://github.com/microsoft/TypeScript/pull/35392
https://github.com/microsoft/TypeScript/issues/20469
This issue has not been resolved for a long time since the question was asked.
Support JSX fragments with jsxFragFactory compiler option and @jsxFrag pragma