microsoft / microsoft/TypeScript
Starting overload selection in signature help doesn't account for discriminating arguments
Nessuno ha ancora preso questa issue.
- Lingua principale
- Go
- Stelle
- 111k
- Fork
- 14.4k
- Merge medio
- 1g 19h
- PR unite (30g)
- 117
Descrizione
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, {});
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia riproducendo l'esempio di overload nell'issue e analizza la gestione di signature help di TypeScript per la selezione degli overload. Verifica il comportamento quando il primo argomento discriminante cambia tra valori di enum; il lavoro è completato quando signature help seleziona l'overload corrispondente a quell'argomento invece di mantenere l'overload selezionato in precedenza.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- typescript
- Ambito
- compilers
- Tipo di issue
- Bug
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 35/100