microsoft / microsoft/TypeScript

Type with overloaded method with a generic overload matches type with incompatible method

Abierto
#37,263 2 comentarios 1 reacción 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

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

Descripción

TypeScript Version: 3.9.0-dev.20200305

Search Terms:
generic type overload

Code

interface I1 {
    f<V extends 'a'>(value: V): void;
    f(value: 'b'): void;
}

interface I2 {
    f(value: 'c'): void;
}

function test(x: I1) {
    function u(y: I2) { }

    u(x);
}

Expected behavior:
Compilation error, u cannot accept x as I1 cannot handle f('c')

Actual behavior:
Compilation succeeds.
Note that all of the following fail, as expected:

interface I1 {
    // f<V extends 'a'>(value: V): void;
    f(value: 'b'): void;
}

interface I2 {
    f(value: 'c'): void;
}

function test(x: I1) {
    function u(y: I2) { }

    u(x);
}
interface I1 {
    f<V extends 'a'>(value: V): void;
    // f(value: 'b'): void;
}

interface I2 {
    f(value: 'c'): void;
}

function test(x: I1) {
    function u(y: I2) { }

    u(x);
}
interface I1 {
    f(value: 'a'): void;
    f(value: 'b'): void;
}

interface I2 {
    f(value: 'c'): void;
}

function test(x: I1) {
    function u(y: I2) { }

    u(x);
}

Playground Link:
https://www.typescriptlang.org/play/?ts=3.9.0-dev.20200305#code/JYOwLgpgTgZghgYwgAgJIEZkG8CwAoZQ5GAHgDVkIAPSEAEwGdkByOZgPgAoA3OAGwCuEAFzIyASlHcA9sDoBufEWI9+Q0cwBGzSchlzFeAL758oSLEQpUAJmxKiMVYJEsEOqbIX4TefDAEQBDBgaRBkSAYwTipRDHF7AkdA4NDwgU4ATzibBKxkXwdCDKpxQyMgA

Related Issues:
Not sure.

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

Comienza con el compilador TypeScript 3.9.0-dev.20200305 y las interfaces mínimas y la llamada indicadas en el issue, usando el ejemplo enlazado de Playground para reproducir la asignación aceptada correctamente. Confirma que la combinación de sobrecargas genérica y no genérica acepta incorrectamente I1 como I2; después, añade una prueba de regresión y verifica que la llamada produce el error de compilación esperado.

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
4/5
Tiempo estimado
3-5 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.