microsoft / microsoft/TypeScript
Function implementation that returns literal types is not assignable to widened overload
Nadie ha tomado este issue todavía.
- 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.
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
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- 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