Title: Type inference regression on function calls not saved to variables, due to #61668 · Issue #62071 · microsoft/TypeScript · GitHub
Open Graph Title: Type inference regression on function calls not saved to variables, due to #61668 · Issue #62071 · microsoft/TypeScript
X Title: Type inference regression on function calls not saved to variables, due to #61668 · Issue #62071 · microsoft/TypeScript
Description: 🔎 Search Terms 61668 inference overload regression tuple 🕗 Version & Regression Information This changed in commit or PR #61668 ⏯ Playground Link https://www.typescriptlang.org/play/?ts=5.9.0-beta#code/PTAEGIDYEZMgOUBjAFgQwHYHMCmBnUAFxR1...
Open Graph Description: 🔎 Search Terms 61668 inference overload regression tuple 🕗 Version & Regression Information This changed in commit or PR #61668 ⏯ Playground Link https://www.typescriptlang.org/play/?ts=5.9.0-beta#...
X Description: 🔎 Search Terms 61668 inference overload regression tuple 🕗 Version & Regression Information This changed in commit or PR #61668 ⏯ Playground Link https://www.typescriptlang.org/play/?ts=5.9.0-b...
Opengraph URL: https://github.com/microsoft/TypeScript/issues/62071
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Type inference regression on function calls not saved to variables, due to #61668","articleBody":"### 🔎 Search Terms\n\n61668 inference overload regression tuple\n\n### 🕗 Version \u0026 Regression Information\n\n- This changed in commit or PR #61668\n\n\n### ⏯ Playground Link\n\nhttps://www.typescriptlang.org/play/?ts=5.9.0-beta#code/PTAEGIDYEZMgOUBjAFgQwHYHMCmBnUAFxR1AEsMAzHAJxwyVMpoHsBbUAbQwFc2AjWgBpQeQjQpYAukRagAFLwG0APmInYAlJykAoACY4kAGzR1QlHg0JkWGULkIA5PvM0AuUAAVWbMnhwAHiVBGgA+AG4DI1NzS2tbe0cAZXE3Tx92fyD1SUjokzMmKyQbO1AeAIAVHgAHYxx5QjqGz24+UJFc7CkPUAA3FjJ9KKQ7MVBa0ABeb19sgDo6PBZjfsadTQXienk3GbC5rICFtGNjeU5HFzY3ERS0zV6tnYx5Spwa+pxNKKA\n\n### 💻 Code\n\n```ts\ndeclare function getNum(): Promise\u003cnumber\u003e;\ndeclare function getStr(): Promise\u003cstring\u003e;\ndeclare function useTuple(tuple: [number, string]): void;\nconst p = Promise.resolve([]).then(() =\u003e Promise.all([getNum(), getStr()])).then(useTuple);\n```\n\n\n### 🙁 Actual behavior\n\nThe `Promise.all` infers to `Promise\u003c(number|string)[]\u003e`.\n\n### 🙂 Expected behavior\n\nThe `Promise.all` should infer `Promise\u003c[number, string]\u003e`.\n\n### Additional information about the issue\n\nThis only happens when the `Promise.all` call is directly returned. If I instead write\n\n```\nconst p = Promise.all([getNum(), getStr()]);\nreturn p;\n```\n\nthen it infers the tuple correctly again, even without doing anything that would suggest it should infer the type differently.\n\nThis PR also impacted inference of enums: in [another example](https://www.typescriptlang.org/play/?ts=5.9.0-beta#code/PTAEDkHkBUFEC5QHsBGBnApgJwG7baAJYEDGSAdgC5YCGONWhNVAUCQDY1oEDKArigBWGEpQA80AHygA3i1DJ02PFjSIAFOvrs+GRNACUoALzScSQgBMDAbQC6J0PYDc80GXJpqfUUizqAB0Z6SgxQAH1tXX0jGQBfFgSWDHI+AFtQAFkkSzC5BQBBRwByGmKAGjcAIRKUCsSWNk5uUB5lQhI8tzScjABCRH4hEXFs3MlXBNyOBjCAMz5yUUIKdywMGlDskgBrMUghSUCsJAC1WRsABSJyUB2MAE8kOdADwTsAfkQ3q7s4g0Q5isrjY602GG2ezauA6GCO+VAIAgMAQoGgAAtiDc5tgUp13OjmABzDCWG6gADEADYAIxUqkADm6vUQ5AwAHdWgJhKJ1GMMAA6AoGSr-EEeLygHq5RxszlDHmUPm9IUGVxIhSgAB6H1BGy2SF2YmhOFh8OlGDFLCAA), I pass `{mode: new Subject(Mode.A)}` into a function that fails because it infers `Subject\u003cMode.A\u003e` while if I save a temporary `const mode = new Subject(Mode.A);` then it infers `Subject\u003cMode\u003e` and passes.","author":{"url":"https://github.com/shicks","@type":"Person","name":"shicks"},"datePublished":"2025-07-15T04:53:56.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":1},"url":"https://github.com/62071/TypeScript/issues/62071"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:eb8f5559-2e2b-77f9-f32a-8ec526e5404f |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | A5B8:3B16A6:E3C48B:13F2F4B:6A4E912C |
| html-safe-nonce | d42f33f4a91fc4c36d6ee029cca68c488abf0c60a32ec717929e63dfb73c4ebb |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJBNUI4OjNCMTZBNjpFM0M0OEI6MTNGMkY0Qjo2QTRFOTEyQyIsInZpc2l0b3JfaWQiOiI0MTcxNzU5ODczMDY1NjUyNTI0IiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0= |
| visitor-hmac | 9ca7ee60640f00fe748fa59d6534aadaa6ec08f98c9caffbc488f0bc57cb7a64 |
| hovercard-subject-tag | issue:3230761313 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/microsoft/TypeScript/62071/issue_layout |
| twitter:image | https://opengraph.githubassets.com/0edb8a3dc9b691d4bfe0632bf9fd2d27992bfbf85af34e8262ae5c97d5a8899b/microsoft/TypeScript/issues/62071 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/0edb8a3dc9b691d4bfe0632bf9fd2d27992bfbf85af34e8262ae5c97d5a8899b/microsoft/TypeScript/issues/62071 |
| og:image:alt | 🔎 Search Terms 61668 inference overload regression tuple 🕗 Version & Regression Information This changed in commit or PR #61668 ⏯ Playground Link https://www.typescriptlang.org/play/?ts=5.9.0-beta#... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | shicks |
| hostname | github.com |
| expected-hostname | github.com |
| None | 41b6ab3ba6d20a71766ac245b5a4a94c6fc672a9cd4da7d44c1b33ab8bf6a21c |
| turbo-cache-control | no-preview |
| go-import | github.com/microsoft/TypeScript git https://github.com/microsoft/TypeScript.git |
| octolytics-dimension-user_id | 6154722 |
| octolytics-dimension-user_login | microsoft |
| octolytics-dimension-repository_id | 20929025 |
| octolytics-dimension-repository_nwo | microsoft/TypeScript |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 20929025 |
| octolytics-dimension-repository_network_root_nwo | microsoft/TypeScript |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | e6a744804e8e70f97b4d5a18a94dcc63db22f97a |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width