Microsoft/TypeScript

Index type for an intersected `NoInfer` can get sometimes incorrectly deferred

Open

#61.091 aperta il 31 gen 2025

Vedi su GitHub
 (0 commenti) (0 reazioni) (0 assegnatari)TypeScript (6726 fork)batch import
Domain: Index TypesHelp WantedPossible Improvement

Metriche repository

Star
 (48.455 star)
Metriche merge PR
 (Merge medio 6g 17h) (9 PR mergiate in 30 g)

Descrizione

🔎 Search Terms

noinfer intersection index type keyof deferred deferral

🕗 Version & Regression Information

  • This is the behavior in every version I tried

⏯ Playground Link

https://www.typescriptlang.org/play/?ts=5.8.0-dev.20250131#code/C4TwDgpgBAKhDOwoF4oGsIgPYDMoAoA5LASQDscIAnAHgG8ocssAuKRKgSzIHMoBfAHxQAZFDr8AlAG4AUAHp5UZQD0A-LNCRYCYACYU6TLgIMmrdsC68Bo8VLmLlUdbKA

💻 Code

type Test = keyof (NoInfer<{ foo: string }> & {});
//   ^? type Test = keyof (NoInfer<{ foo: string; }> & {})
type Test2 = keyof ({ foo: string } & {});
//   ^? type Test2 = "foo"

🙁 Actual behavior

Test is a deferred index type

🙂 Expected behavior

Test shouldn't be a deferred index type but a "foo" literal, just like Test2.

Additional information about the issue

No response

Guida contributor