microsoft / microsoft/TypeScript

Starting overload selection in signature help doesn't account for discriminating arguments

Ouverte
#36,582 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Experience Enhancement Suggestion
Langage dominant
Go
Étoiles
111k
Forks
14.3k
Merge moyen
2 j 4 h
PR mergées (30 j)
132

Description

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:

  1. Write Database.create(DatabaseType.Graphite, {}) // now we get Influx overload xD
  2. Change DatabaseType.Graphite to DatabaseType.Sqlite // now we get Sqlite overload :D
  3. 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

image
image
image

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, {});

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par reproduire l’exemple de surcharge dans l’issue et examinez la gestion de signature help de TypeScript pour la sélection des surcharges. Vérifiez le comportement lorsque le premier argument discriminant change entre des valeurs d’enum ; c’est terminé lorsque signature help sélectionne la surcharge correspondant à cet argument au lieu de conserver la surcharge précédemment sélectionnée.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
typescript
Domaine
compilers
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.