Closed
Description
TypeScript Version:
2.3.0
Code
function f(x: number){
return x;
}
function g(x){ return x};
function h(x){ return f(x); };
Expected behavior:
I would expect the inferred type of g
to be (x:any)=>any
, and the infered type of h
to be (x:number) => number
(due to the restrictions placed by the call of f
)
When compiling with noImplicitAny
, I would only expect an error on g
, not on h
Actual behavior:
Running tsc --declaration
on this snippet gives me:
declare function f(x: number): number;
declare function g(x: any): any;
declare function h(x: any): number;
the x
argument on h
does not seem to use the f(x)
call to tighten the definition.
Considering the simplicity of the example, I imagine I might be missing an important detail in the type system that makes this the proper inference result, but I haven't figured it out yet.