microsoft / microsoft/TypeScript
Starting overload selection in signature help doesn't account for discriminating arguments
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
TS Template added by @mjbvz
TypeScript Version: 3.8.0-dev.20200201
Search Terms
- overload
Incorrect types sugestion with overload
https://gitlab.com/kamidere-laboratory/duat/tree/testy
overload is declarated in src/database/Controller.ts method create
- VSCode Version: 1.41.1
- OS Version: Windows_NT x64 10.0.18362
Steps to Reproduce:
- Write Database.create(DatabaseType.Graphite, {}) // now we get Influx overload xD
- Change DatabaseType.Graphite to DatabaseType.Sqlite // now we get Sqlite overload :D
- Change back to DatabaseType.Graphite // now we still get Sqlite overload :(
https://youtu.be/a7FHxIItceA
Does this issue occur when all extensions are disabled?: Yes



interface a {
a: string;
b: string;
c: {
a:number;
b:string;
}
}
interface b {
a: string;
b: string;
c: {
a: number;
b: string;
c: string[];
}
}
interface c {
a: string;
b: string;
}
enum d {
"A" = 'a',
"B" = 'b',
"C" = 'c',
}
class testClass {
constructor(arg1: d, arg2: a | b | c) {
console.log(arg1, arg2)
}
static doSomething(arg1: d.A, arg2: a): testClass;
static doSomething(arg1: d.B, arg2: b): testClass;
static doSomething(arg1: d.C, arg2: c): testClass;
static doSomething(arg1: d, arg2: a | b | c): testClass {
return new this(arg1, arg2);
}
}
testClass.doSomething(d.C, {});
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 Überladungsbeispiel im Issue zu reproduzieren, und untersuche TypeScript's Behandlung von Signature Help bei der Auswahl von Überladungen. Überprüfe das Verhalten, wenn sich das unterscheidende erste Argument zwischen enum-Werten ändert; abgeschlossen ist die Aufgabe, wenn Signature Help die Überladung auswählt, die diesem Argument entspricht, statt die zuvor ausgewählte Überladung beizubehalten.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- typescript
- Bereich
- compilers
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100