microsoft / microsoft/TypeScript

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

Abierto
#36,582 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Experience Enhancement Suggestion
Lenguaje dominante
Go
Estrellas
111k
Forks
14.4k
Merge medio
1 d 19 h
PR fusionados (30 d)
117

Descripción

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

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Empieza reproduciendo el ejemplo de sobrecarga del issue e inspecciona el manejo de signature help de TypeScript para la selección de sobrecargas. Verifica el comportamiento cuando el primer argumento discriminante cambia entre valores de enum; se considera terminado cuando signature help selecciona la sobrecarga que coincide con ese argumento en lugar de conservar la sobrecarga seleccionada anteriormente.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
typescript
Área
compilers
Tipo de issue
Error
Dificultad
3/5
Tiempo estimado
1-2 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.