microsoft / TypeScript

TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
https://www.typescriptlang.org
Apache License 2.0
100.16k stars 12.38k forks source link

TypeScript 5.5 Iteration Plan #57475

Closed DanielRosenwasser closed 3 days ago

DanielRosenwasser commented 6 months ago

This document outlines our focused tasks for TypeScript 5.5. It minimally indicates intent to investigate tasks or contribute to an implementation. Nothing is set in stone, but we will strive to complete these tasks in a reasonable timeframe.

Date Event
2024-03-05 TypeScript 5.4 Release
2024-04-19 Create 5.5 Beta (5.5.0) Build for Testing
2024-04-24 TypeScript 5.5 Beta Release
2024-05-31 Create 5.5 RC (5.5.1) Build for Testing
2024-06-04 TypeScript 5.5 RC Release
2024-06-14 Create 5.5 Final (5.5.2) Build for Testing
2024-06-18 TypeScript 5.5 Final Release πŸš€
gantt
    dateFormat  YYYY-MM-DD
    TypeScript 5.4 Stabilization Period : 2024-02-16, 2024-03-05
    TypeScript 5.5 Beta Development : 2024-02-16, 2024-04-19
    TypeScript 5.5 RC Development : 2024-04-20, 2024-05-31
    TypeScript 5.5 Stabilization Period : 2024-06-01, 2024-06-18
todayMarker stroke-width:5px,stroke:#0f0,opacity:0.5

Compiler and Language

Editor and Language Service

Performance

Website and Docs

Infrastructure

DanielRosenwasser commented 6 months ago

The previous iteration plan is available here.

kevinbarabash commented 6 months ago

How much of an impact will --isolatedDeclarations have on type checking performance in large projects?

jakebailey commented 6 months ago

None directly, in the same way that isolatedModules doesn't speed things up in and of itself.

But, if you have code which passes isolatedModules, it can be safely transpiled by an external tool (like Babel, esbuild, swc). And similarly, code passing isolatedDeclarations can be transpiled into a declaration file by an external tool too (once one exists).

jakebailey commented 6 months ago

(This isn't to say that there can't be some speedups possible in TypeScript in the future enabled by this option, just that the flag itself is intended to just be checks.)

JVKdouk commented 6 months ago

Hey everyone, any chance of getting #26242 in this release? It was proposed back in 2018 and there has not been much work on the issue up to this point. Getting it at least planned would already be amazing to the TS community. I believe it would substantially improve the power of TS in the long run!

clearfram3 commented 6 months ago

Just a heads up, I'm working on remaking the website using Sveltekit. Styles will be the same, but the overall structure will be simpler and much quicker to iterate on.

DanielRosenwasser commented 6 months ago

@ClearedFram3 while I don't want to discourage experimentation, I don't think we would accept such a large PR without discussing changes ahead of time.

clearfram3 commented 6 months ago

@DanielRosenwasser I should've said the codebase structure will be differentβ€”the website style/content structure will be the same. After the current codebase is replaced, there will ample room for discussion about changing design and content or even to a different framework haha.

graphemecluster commented 6 months ago

I’ve been watching the iteration plan threads from 5.4 seeing my PR (#55600) on the list. I am on standby anytime for any necessary alternations.

jwalkerinterpres commented 6 months ago

Is there anything Typescript community members can do to influence this list?

I think I can speak for every TS React dev on the planet when I say that https://github.com/microsoft/TypeScript/issues/29526 (improved syntax for destructuring an argument ... like the React props argument) has languished long enough. The community has essentially reached a consensus on a desired syntax in that ticket (something that was not easy), and now all that's needed is developer will to implement.

I can't speak for anyone else, but personally I would trade everything on the 5.5 list for this one feature!

aspirisen commented 6 months ago

A question about Investigate Recursive Object Type References Will it help i.e. in zustand in avoiding writing interface for the state, and instead just infer the type from the initial state (create-function argument)?

jcalz commented 5 months ago

Cross-linking #33912 and #56941

narcis-ro commented 5 months ago

Is there any chance after 10 years.. to introduce nameof?

Is it super complicated? Honest question

https://github.com/microsoft/TypeScript/issues/1579

DanielRosenwasser commented 5 months ago

@typescript-bot bump release-5.4

typescript-bot commented 5 months ago

Starting jobs; this comment will be updated as builds start and complete.

Command Status Results
bump release-5.4 βœ… Started βœ… Results
typescript-bot commented 5 months ago

Hey, @DanielRosenwasser! I've set the version of release-5.4 to 5.4.4 for you.

DanielRosenwasser commented 5 months ago

@typescript-bot bump release-5.4

typescript-bot commented 5 months ago

Starting jobs; this comment will be updated as builds start and complete.

Command Status Results
bump release-5.4 βœ… Started βœ… Results
DanielRosenwasser commented 5 months ago

Whoops - I've been posting in the wrong iteration plan. Sorry for the noise folks.

typescript-bot commented 5 months ago

Hey, @DanielRosenwasser! I've set the version of release-5.4 to 5.4.5 for you.

nyngwang commented 5 months ago

I think I can speak for every TS React dev on the planet when I say that #29526 (improved syntax for destructuring an argument ... like the React props argument) has languished long enough.

I can't disagree more with all existing proposals in #29526. It will make TypeScript syntax very confusing.

TypeScript will make people's code type-safe. TypeScript will not make people's code confusing. All existing proposals are confusing.

Personally, I treat the parameter destructuring syntax as an anti-pattern. It's already a confusing shorthand syntax that looks like something half-done when you only rename a subset of the properties. Now they're proposing old:new:Type and old::string, etc to make it even more confusing. Optional rename in the middle? NO! No one will intuitively know that string here is to mark the old name as string! What were they doing!?

Without it, the problem of working with the destructing syntax can already be solved by extracting those in-place object types into standalone types or interfaces. It might be tedious for some, but at least it's NOT confusing, at all!

With any of those existing proposals, it will be really, really confusing. And you need to introduce a set of new rules. It does not solve any hard problems.

Not to make anyone feel bad. But it's important to consider different voices. TypeScripts will be fine without it.

Sincerely, and thanks for your reading.

WORMSS commented 5 months ago

I think I can speak for every TS React dev on the planet when I say that #29526 (improved syntax for destructuring an argument ... like the React props argument) has languished long enough.

I can't disagree more with all existing proposals in #29526. It will make TypeScript syntax very confusing.

This is the first I am hearing about this.. (I guess I've had my head in the sand for a while).. We already have a solution to this.. ({ a, b }: SomeType) => void.. This makes sense, and already works.. This sounds like a massive problem waiting to happen if this gets implemented the way people are saying.

This type of stuff is going to push the whole "Javascript can run TS script directly, but just ignoring the types" concept even FURTHER AWAY! It seems like shooting yourself in the foot to try and solve something that is already solved.

snarbies commented 5 months ago

But it's important to consider different voices.

Then why not add your voice to that issue? Respond to the arguments and examples presented there, there.

This type of stuff is going to push the whole "Javascript can run TS script directly, but just ignoring the types" concept even FURTHER AWAY!

Again, if you join the actual discussion you can respond to people who are addressing this exact concern (https://github.com/microsoft/TypeScript/issues/29526#issuecomment-1950286449). The only argument I see in that issue is that the double-colon syntax may actually benefit this cause. If there's an argument to the contrary, you should make it there so it can be properly considered.

jwalkerinterpres commented 5 months ago

We already have a solution to this.. ({ a, b }: SomeType) => void

Most devs believe in the "DRY principle". When you use the syntax you mentioned, it's not DRY code; you have ({ a, b }: {a: someType; b:someType) => void (where a and b are needlessly repeated).

https://github.com/microsoft/TypeScript/issues/29526 is simply about eliminating duplication, nothing more. There are already 30+ devs participating in that discussion (and who knows how many are lurking), all because they want to see that duplication eliminated.

If you have something against eliminated duplication, by all means respond ... in that ticket. This thread is not the appropriate place to discuss any particular ticket.

DanielRosenwasser commented 5 months ago

For anyone here for the iteration plan: we are going to push the beta out about a week to make sure we can bring in some scheduled work.

DanielRosenwasser commented 4 months ago

@typescript-bot create release-5.5

typescript-bot commented 4 months ago

Starting jobs; this comment will be updated as builds start and complete.

Command Status Results
create release-5.5 ❌ Error: HttpError: Unexpected inputs provided: ["core_tag"] - https://docs.github.com/rest/actions/workflows#create-a-workflow-dispatch-event
DanielRosenwasser commented 4 months ago

No, bad.

DanielRosenwasser commented 4 months ago

Jake says he fixed it. @typescript-bot tell @jakebailey thank you and also

@typescript-bot create release-5.5

typescript-bot commented 4 months ago

Starting jobs; this comment will be updated as builds start and complete.

Command Status Results
create release-5.5 βœ… Started ❌ Results
typescript-bot commented 4 months ago

Hey, @DanielRosenwasser! I was unable to create the new release branch.

Check the logs at: https://github.com/microsoft/TypeScript/actions/runs/8812429335

WORMSS commented 4 months ago

Surely there is a better way to interact with a bot than to have multiple people emailed about every request and then every response?

Aloso commented 4 months ago

@WORMSS but you can disable notifications for this thread, if you don't want to be notified about new activity. The bot exists to help contributors, who do want to get notified about messages from the bot.

WORMSS commented 4 months ago

I don't mind getting notifications.. don't want to get a notification about people talking TO the bot..

Aloso commented 4 months ago

GitHub doesn't provide such a feature. And I don't understand your complaint, it is just a minor inconvenience for you, but a big help for contributors.

DanielRosenwasser commented 4 months ago

Hey all, 5.5 Beta is now out!

Jack-Works commented 4 months ago

for anyone founding their .d.ts file augmentation no longer working (a breaking change not mentioned in the blog), see https://github.com/microsoft/TypeScript/issues/58324

DanielRosenwasser commented 3 months ago

@typescript-bot sync release-5.5

typescript-bot commented 3 months ago

Starting jobs; this comment will be updated as builds start and complete.

Command Status Results
sync release-5.5 βœ… Started βœ… Results
typescript-bot commented 3 months ago

Hey, @DanielRosenwasser! I've pulled main into release-5.5 for you.

DanielRosenwasser commented 3 months ago

@typescript-bot bump release-5.5

typescript-bot commented 3 months ago

Starting jobs; this comment will be updated as builds start and complete.

Command Status Results
bump release-5.5 βœ… Started βœ… Results
typescript-bot commented 3 months ago

Hey, @DanielRosenwasser! I've set the version of release-5.5 to 5.5.1-rc for you.

AlttiRi commented 3 months ago

2024-06-04 TypeScript 5.5 RC Release

There will no 5.5.1-rc on NPM? https://www.npmjs.com/package/typescript?activeTab=versions

Only 5.5.0-beta until 5.5.2 is released?

DanielRosenwasser commented 3 months ago

Hey all, my apologies on the delays - that's mostly on me, but as always, I'll note that the schedule is aspirational and not a promise on exact dates.

5.5.1-rc is now on npm - the blog post and the tagged release will be out on GitHub soon. Thanks for your patience!

DanielRosenwasser commented 3 months ago

The blog post is out for the RC, as is the git tag v5.5-rc (and GitHub release).

DanielRosenwasser commented 3 months ago

The RC got pushed back 2 days (June 6th) (typical) so the stable release will go out 2 days later (June 20th) (typical).

DanielRosenwasser commented 2 months ago

@typescript-bot bump release-5.5

typescript-bot commented 2 months ago

Starting jobs; this comment will be updated as builds start and complete.

Command Status Results
bump release-5.5 βœ… Started βœ… Results
typescript-bot commented 2 months ago

Hey, @DanielRosenwasser! I've set the version of release-5.5 to 5.5.2 for you.