microsoft / microsoft/TypeScript
Rest tuple parameter with intersection/union places error on wrong argument
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Go
- Sterne
- 111k
- Forks
- 14.3k
- Ø Merge
- 1 T. 19 Std.
- Gemergte PRs (30 T.)
- 117
Beschreibung
TypeScript Version: 3.2.0-dev.20181113
Search Terms:
rest tuple, intersection, union, error, argument, misplaced
Code
declare function boop<T extends any[]>(...args: T & [number, string]): void;
boop(123, 456); // error
// ~~~ <-- error on first argument
// Argument of type '[123, 456]' is not assignable to parameter
// of type '[number, number] & [number, string]'.
// Type '[123, 456]' is not assignable to type '[number, string]'.
// Type '456' is not assignable to type 'string'.
Expected behavior:
I expect an error on the second argument (456), since that's the argument that causes the failure, as made evident by the error message. (Or possibly I expect an error on both arguments, if it's interpreted as a failure to match the rest parameter.)
Actual behavior:
The actual error is on the first argument (123). This is a minor problem, and it only seems to show up in the intersection-with-type-parameter situation above (concrete types like ...args: [number, string] & [number, string] work fine), but I figured I'd report it in case it has an easy fix.
(Note to self or interested non-selves: ran into this in a Stack Overflow answer)
Playground Link:
🔗
Related Issues:
Haven't found anything. Anyone find anything?
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
Beginnen Sie mit der bereitgestellten TypeScript Playground-Reproduktion und vergleichen Sie den gemeldeten Diagnosebereich mit dem erwarteten fehlschlagenden Argument. Verfolgen Sie die Verarbeitung von Rest-Tupel-Parametern in Kombination mit einer Schnittmenge von Typparametern durch den Compiler und überprüfen Sie anschließend, dass die Diagnose auf das zweite Argument zeigt, ohne den konkreten Schnittmengenfall zu beeinträchtigen.
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