microsoft / microsoft/TypeScript
Reverse mapped type inference fails to infer from annotated parameters in partially-inferrable object types
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Go
- Sterne
- 111k
- Forks
- 14.4k
- Ø Merge
- 1 T. 19 Std.
- Gemergte PRs (30 T.)
- 117
Beschreibung
🔎 Search Terms
reverse mapped inference annotated parameters partially inferrable noninferrable object context sensitive
🕗 Version & Regression Information
- This is the behavior in every version I tried
⏯ Playground Link
💻 Code
declare function setup<TGuards>(_: {
guards: {
[K in keyof TGuards]: (ctx: unknown, params: TGuards[K]) => boolean;
};
}): TGuards;
const guards = setup({
guards: {
a: () => true,
b: (_, params) => true,
c: (_, params: number) => true,
},
});
guards
// ^? const guards: { a: unknown; b: unknown; c: unknown; }
🙁 Actual behavior
It infers { a: unknown; b: unknown; c: unknown; }
🙂 Expected behavior
I'd expect { a: unknown; b: unknown; c: number; } to get inferred here
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 damit, das Beispiel mit annotiertem Parameter im verlinkten TypeScript Playground zu reproduzieren und die tatsächlich und erwarteten inferierten Typen zu vergleichen. Das Issue nennt keine Repository-Datei oder keinen Regressionstest, daher müssen die relevante Implementierung der Inferenz von reverse mapped types und ein geeigneter Compiler-Test gefunden werden; erledigt ist die Aufgabe, wenn das Beispiel c als number inferiert, während a und b unknown bleiben.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- typescript
- Bereich
- compilers
- Issue-Typ
- Bug
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 30/100