microsoft / microsoft/TypeScript
No type inferrence of callback arguments inside a tuple union type
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
- discriminated union inference
- union argument inference
🕗 Version & Regression Information
- This is a compilation error in
tsserver 3.3.2
⏯ Playground Link
💻 Code
type InferArg =
| [1, (a: number) => void]
| [2, (b: string) => void];
const arg: InferArg = [1, (a) => { }];
🙁 Actual behavior
I get a compilation error:
Parameter 'a' implicitly has an 'any' type.(7006)
🙂 Expected behavior
a should be inferred to be a number because I already passed 1 as the first tuple element. Type inference should be identical to this code:
type InferArg = [1, (a: number) => void];
const arg: InferArg = [1, (a) => { }];
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 der verknüpften TypeScript Playground-Reproduktion und bestätige das Verhalten anhand des tuple-union-Beispiels unter tsserver 3.3.2. Verfolge anschließend die kontextuelle Typisierung des Compilers und die Inferenz von Union-Argumenten für den callback-Parameter. Füge dann eine Abdeckung für das Beispiel hinzu oder aktualisiere sie, sodass der Parameter als number inferiert wird und die Regression verifiziert ist.
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
- 42/100