Function type annotation typescript
<p>I wonder what the meaning is of type annotating a function as below when the formal parameter names does not have to match:</p>

<pre><code>let foo: (x:number, y:number) =&gt; number = (a:number, b:number) =&gt; a+b    
</code></pre>

<p>I mean, what is the meaning of <code>(x:number, y:number) =&gt; number</code>? I think it would make more sense if I could write <code>(number, number) =&gt; number</code> when defining the function type, especially if the 'formal parameter names' does not have to match anyway. </p>

<p>What is the reason that I have to define names like <code>x</code> and <code>y</code> in the function type? Isn't typescript able to infer function type <code>(a:number, b:number) =&gt; number</code>?
And I know I can just omit the explicit type annotation, but in my case I always want explicit type annotations.</p>