microsoft / microsoft/TypeScript
Index type for an intersected `NoInfer` can get sometimes incorrectly deferred
Offen
Dieses Issue hat noch niemand übernommen.
Domain: Index Types
Help Wanted
Possible Improvement
- Vorherrschende Sprache
- Go
- Sterne
- 111k
- Forks
- 14.3k
- Ø Merge
- 1 T. 19 Std.
- Gemergte PRs (30 T.)
- 117
Beschreibung
🔎 Search Terms
noinfer intersection index type keyof deferred deferral
🕗 Version & Regression Information
- This is the behavior in every version I tried
⏯ Playground Link
💻 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
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne mit dem verlinkten TypeScript Playground und reproduziere die Aliase Test und Test2 aus dem Issue. Verfolge, wie der Type Checker keyof über einer Intersection behandelt, die NoInfer enthält; abgeschlossen ist die Aufgabe, wenn Test zum Literal "foo" statt zu einem zurückgestellten Index-Typ aufgelöst wird und damit mit Test2 übereinstimmt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- typescript
- Bereich
- compilers
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 45/100