title: Concrete type is not assignable to generic type
body: <pre><code>type Id = &lt;A&gt;(a: A) =&gt; A
  
  const id: Id = (a: number) =&gt; a;
  </code></pre>
  
  <p>If I use generics in this way the compiler will return an error saying</p>
  
  <pre><code>Type '(a: number) =&gt; number' is not assignable to type 'Id'.
    Types of parameters 'a' and 'a' are incompatible.
      Type 'A' is not assignable to type 'number'.
  </code></pre>
  
  <p>I know it can be solved with 
  <code>type Id&lt;A&gt; = (a: A) =&gt; A</code>
  But what if I can't declare A at every point. Is there a way to just have it flow through, or be inferred?</p>