title: Typescript's conditional type based one extends behaves not as expected
body: <p>Let's say we have this example:</p>
  
  <pre><code>class Base&lt;T extends Base&lt;T&gt;&gt; {}
  class ClassA extends Base&lt;ClassA&gt; {}
  class ClassB extends Base&lt;ClassB&gt; {}
  type Condition = ClassA extends ClassB ? true : false;
  </code></pre>
  
  <p>The base class has one generic argument which basically says, anything derivind from it should template it with it's own type.</p>
  
  <p>Then we have 2 classes that derive from said base.</p>
  
  <p>Lastly I've created a conditional type that checks whether the derived classes extend each other.</p>
  
  <p>To my surprise typescript is telling me that they do, but I think that this condition should be false. <code>ClassA</code> isn't extending <code>ClassB</code> and vice versa. Only <code>ClassA extends Base&lt;ClassA&gt;</code> should return true.</p>
  
  <p>Is this an issue in typescript's conditional types or am I missing something? I came across this issue while building more complex conditional type, that as well was returning unexpected results.</p>
  
  <p><strong>Edit:</strong> The generic arguments aren't needed as well. Even this example returns wrong result:</p>
  
  <pre><code>class Base {}
  class ClassA extends Base {}
  class ClassB extends Base {}
  type Condition = ClassA extends ClassB ? true : false;
  </code></pre>