microsoft / microsoft/TypeScript
Generic type inference failure in a union.
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
TypeScript Version: 3.3.0-dev.20190117
Search Terms: generic type inference, union types
Code
function f1<A1, B1>(cb: (a: A1, b: B1) => void) {
f2(cb); // I expect no errors
}
function f2<A2, B2>(cb: ((x: number, a: A2, b: B2) => void)|
((a: A2, b: B2) => void)) {} // If I swap the two types it compiles
Expected behavior:
No errors.
Actual behavior:
TS2345: Argument of type '(a: A1, b: B1) => void' is not assignable to parameter of type '((x: number, a: B1, b: B1) => void) | ((a: B1, b: B1) => void)'.
Type '(a: A1, b: B1) => void' is not assignable to type '(x: number, a: B1, b: B1) => void'.
Types of parameters 'a' and 'x' are incompatible.
Type 'number' is not assignable to type 'A1'.
Related Issues:
I looked around and didn't anything obviously related.
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, den generischen Inferenzfehler im TypeScript Playground-Link mit TypeScript 3.3.0-dev.20190117 zu reproduzieren, und vergleiche dann das Verhalten, wenn die Mitglieder der Union neu angeordnet werden. Als erledigt gilt die Aufgabe, wenn der gezeigte Aufruf von f2 keinen Fehler erzeugt und dabei die erwartete Inferenz des generischen Parameters beibehalten wird.
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
- Klar beschrieben
- Anfängerfreundlichkeit
- 35/100