microsoft / microsoft/TypeScript

Function implementation that returns literal types is not assignable to widened overload

Abierto
#37,394 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Bug Domain: Literal Types
Lenguaje dominante
Go
Estrellas
111k
Forks
14.4k
Merge medio
1 d 19 h
PR fusionados (30 d)
117

Descripción

TypeScript Version: 3.8.3

Search Terms: overload widen literal

Code

function foo(x: string): string;
function foo(x: number): number;

function foo(x: string | number) {
    if (typeof x === 'string') return 'foo';
    return 23;
}

Expected behavior: Implementation satisfies overloads.

Actual behavior: The first overload throws an error that it doesn't match the implementation. Doesn't matter which overload comes first.

Playground Link

If I widen the literals in the implementation by casting them then everything works fine.

Related Issues: https://github.com/microsoft/TypeScript/issues/37393

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 reproduciendo el ejemplo de sobrecarga en el TypeScript Playground enlazado y compáralo con la versión que usa casts de literales ensanchados. Traza la comprobación de compatibilidad de la implementación para las sobrecargas; se considera terminado cuando la implementación mostrada satisface ambas sobrecargas sin casts y existe cobertura para esta regresión.

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
Bien especificado
Aptitud para principiantes
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.