microsoft / microsoft/TypeScript
Higher order type inference doesn't work with overloads
Abierto
@ahejlsberg ya está trabajando en esto.
Desde el 25/9/2019.
Suggestion
- Lenguaje dominante
- Go
- Estrellas
- 111k
- Forks
- 14.3k
- Merge medio
- 2 d 4 h
- PR fusionados (30 d)
- 132
Descripción
@ahejlsberg
TypeScript Version: typescript@3.7.0-dev.20190925
Search Terms:
Code
interface Curried2<a, b, z> {
(a: a, b: b): z;
(a: a): (b: b) => z;
}
interface Curry {
<a, b, z>(f: (a: a, b: b) => z): Curried2<a, b, z>;
}
declare const curry: Curry;
curry(<T extends 0, U extends 1>(n: T, m: U) => n + m)(1)(0);
curry(<T extends 0, U extends 1>(n: T, m: U) => n + m)(1, 0);
Also the following doesn't work:
interface Curried2<a, b, z> {
(a: a): (b: b) => z;
(a: a, b: b): z;
}
When removing overloads as follows:
interface Curried2<a, b, z> {
(a: a, b: b): z;
}
or
interface Curried2<a, b, z> {
(a: a): (b: b) => z;
}
These work correctly.
Expected behavior:
Infer type parameters correctly and all parameter values are rejected correctly.
Actual behavior:
no error.
Playground Link:
Related Issues:
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.
Evaluación
Este issue todavía no se ha evaluado.