microsoft / microsoft/TypeScript
Nested inference fails if function is called inline
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
Bug Report
🔎 Search Terms
Nested inference, function call
🕗 Version & Regression Information
- This is the behavior in every version I tried, and I reviewed the FAQ for entries about nested function call inference
⏯ Playground Link
With libraries
Minimal reproduction
💻 Code
type NoInfer<T> = [T][T extends any ? 0 : never]
type ErrorFn = (error: unknown) => void
declare const genericFn: <T>(args: {
parser: (p: unknown, errorFn: ErrorFn) => T
handler: (data: { body: NoInfer<T> }) => unknown
}) => T
declare const createParser: <T>(arg: T) => (p: unknown, errorFn: ErrorFn) => NoInfer<T>;
genericFn({
parser: createParser(1 as const),
handler: ({ body: _ }) => {
// ^?
// unknown, should be 1
}
})
🙁 Actual behavior
Handler body is not inferred, becomes default of unknown.
🙂 Expected behavior
Handler body should be inferred from parser, and be 1.
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 der verknüpften minimalen Reproduktion im TypeScript Playground und vergleiche sie anschließend mit der Version, die Bibliotheken verwendet. Verfolge, wie der Inline-Aufruf von createParser zur generischen Inferenz beiträgt, und überprüfe den Körpertyp des Handlers. Als erledigt gilt die Aufgabe, wenn der reproduzierte Fall body als 1 statt als unknown inferiert.
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
- 35/100