microsoft / microsoft/TypeScript
Generic type inference failure in a union.
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.3.0-dev.20190117
Search Terms: generic type inference, union types
Code
function f1<A1, B1>(cb: (a: A1, b: B1) => void) {
f2(cb); // I expect no errors
}
function f2<A2, B2>(cb: ((x: number, a: A2, b: B2) => void)|
((a: A2, b: B2) => void)) {} // If I swap the two types it compiles
Expected behavior:
No errors.
Actual behavior:
TS2345: Argument of type '(a: A1, b: B1) => void' is not assignable to parameter of type '((x: number, a: B1, b: B1) => void) | ((a: B1, b: B1) => void)'.
Type '(a: A1, b: B1) => void' is not assignable to type '(x: number, a: B1, b: B1) => void'.
Types of parameters 'a' and 'x' are incompatible.
Type 'number' is not assignable to type 'A1'.
Related Issues:
I looked around and didn't anything obviously related.
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 fallo de inferencia genérica en el enlace de TypeScript Playground usando TypeScript 3.3.0-dev.20190117; después, compara el comportamiento cuando se reordenan los miembros de la unión. El trabajo está terminado cuando la llamada mostrada a f2 no produce ningún error y se conserva la inferencia esperada del parámetro genérico.
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