title: Typescript infer vs generics
body: <p>I noticed that we can do this:</p>
  <p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
  <div class="snippet-code">
  <pre class="snippet-code-js lang-js prettyprint-override"><code>//type MyType&lt;T&gt; = T extends infer R ? R : never;
  type MyType&lt;T&gt; = T
  
  type T1 = MyType&lt;{ b: string; }&gt; // T1 is { b: string; }</code></pre>
  <pre class="snippet-code-html lang-html prettyprint-override"><code>&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/typescript/3.2.2/typescript.min.js"&gt;&lt;/script&gt;</code></pre>
  </div>
  </div>
  </p>
  <p>Also both <code>MyType</code> have the same result, so my question is: What is the difference between these 2 types?</p>