title: Type is not assignable to type
body: <p>Given</p>
  
  <pre><code>export type Omit&lt;T, K&gt; = Pick&lt;T, Exclude&lt;keyof T, K&gt;&gt;
  
  type AddDoSomething&lt;T&gt; = Omit&lt;T, 'doSomething'&gt; &amp; {
    doSomething: () =&gt; void
  }
  
  class A&lt;T&gt; {
    public type: T
  }
  
  class B&lt;TT&gt; extends A&lt;AddDoSomething&lt;TT&gt;&gt; { }
  
  // Just to check type match
  type Test&lt;T extends typeof A&gt; = unknown
  
  type C = Test&lt;typeof B&gt; // Error -&gt; Type 'typeof B' does not satisfy the constraint 'typeof A'. Types of property 'type' are incompatible.
  </code></pre>
  
  <p>Why is that? I was trying to add a property to some type, and by omitting first, i want to make sure that there is no overlap type to 'doSomething'</p>
  
  <p><em>EDIT -------</em></p>
  
  <p><strong>BUT</strong>
  If i change the type of</p>
  
  <blockquote>
    <p>AddDoSomething</p>
  </blockquote>
  
  <p>to</p>
  
  <pre><code>type AddDoSomething&lt;T&gt; = T &amp; {
    doSomething: () =&gt; void
  }
  </code></pre>
  
  <p>Then everything is alright, any insight? Is there any way i could overwrite the method of 'doSomething' without omitting it?</p>
  
  <p><a href="https://www.typescriptlang.org/play/#src=export%20type%20Omit%3CT%2C%20K%3E%20%3D%20Pick%3CT%2C%20Exclude%3Ckeyof%20T%2C%20K%3E%3E%0D%0A%0D%0Atype%20AddDoSomething%3CT%3E%20%3D%20Omit%3CT%2C%20%22doSomething%22%3E%20%26%20%7B%0D%0A%09doSomething%3A%20()%20%3D%3E%20void%0D%0A%7D%0D%0A%0D%0Aclass%20A%3CT%3E%20%7B%0D%0A%09public%20type%3A%20T%0D%0A%7D%0D%0A%0D%0Aclass%20B%3CTT%3E%20extends%20A%3CAddDoSomething%3CTT%3E%3E%20%7B%20%7D%0D%0A%0D%0Atype%20Test%3CT%20extends%20typeof%20A%3E%20%3D%20unknown%0D%0A%0D%0Atype%20C%20%3D%20Test%3Ctypeof%20B%3E%0D%0A" rel="nofollow noreferrer">Link to Typescript Playground</a></p>