title: Conditional type is inferred differently with generic type
body: <p>Typescript infers the conditional type (with disabled distribution) differently when a generic type is passed.</p>
  <pre><code>type Box&lt;T&gt; = { a: T };
  
  // Conditional type with disabled distribution using tuple.
  type CondType&lt;T&gt; = [T] extends [string | number]
      ? Box&lt;T&gt; : false;
  
  class Test&lt;T extends string | number&gt; {
      public constructor(private value: T) {}
  
      // CondType&lt;T&gt; is not inferred as Box&lt;string | number&gt;
      public one(param: CondType&lt;T&gt;): void {
          param; // type is false | Box&lt;T&gt;
      }
  
      // This works as expected
      public two(param: CondType&lt;string | number&gt;): void {
          param; // type is Box&lt;string | number&gt;
      }
  }
  </code></pre>
  <p>Why is this? and is there a way around it?</p>