title: why not using directly type GenericTpye<T>=T when we need to get the type of an argument?
body: <p>I am learning typescript and I've read some related questions but still it's hard for me to understand the use case were it is necessary to use the generic type as:</p>
  <pre><code> type myGenericType&lt;T&gt;=T extends infer U?U:never
  </code></pre>
  <p>If I do for example:</p>
  <pre><code>type T1=myGenericType&lt;{foo:string}&gt;
  </code></pre>
  <p>the type of <code>T1</code> is indeed <code>{foo:string}</code></p>
  <p>So why to use the T extend and not directly:</p>
  <pre><code>type mySimplerGenericType&lt;T&gt;=T
  </code></pre>
  <p>where if I do:</p>
  <p><code>type T2=mySimpleGenericType&lt;{foo:string}&gt;</code> the type also results:</p>
  <pre><code>{foo:string}
  </code></pre>
  <p>So mabe a more precise question would be, what is the difference between these two:</p>
  <pre><code> type myGenericType&lt;T&gt;=T extends infer U?U:never
   type mySimplerGenericType&lt;T&gt;=T
  </code></pre>
  <p>Thank you,</p>
  <p>Marc</p>