title: Type T does not satisfy the constraint C for type parameter P error in TypeScript
body: <p>I'm trying to implement this in TypeScript:</p>
  
  <pre>
  interface IViewModel { }
  interface IScope&lt;TViewModel extends IViewModel&gt; {
      vm: TViewModel; // {1}
  }
  interface IController&lt;TViewModel extends IViewModel, TScope extends IScope&lt;TViewModel&gt;&gt; { }
  
  class Controller&lt;TViewModel extends IViewModel, TScope extends IScope&lt;TViewModel&gt;&gt;
      implements IController&lt;TViewModel, TScope&gt; { } // {2}
  </pre>
  
  <p>but I'm getting an error on line {2}: "Type 'IScope&lt;TViewModel extends IViewModel&gt;' does not satisfy the constraint 'IScope&lt;TViewModel extends IViewModel&gt;' for type parameter 'TScope extends IScope&lt;TViewModel&gt;'."</p>
  
  <p>If I go further and try to extend the Controller class:</p>
  
  <pre>
  interface IMainViewModel extends IViewModel { }
  
  class MainController
      extends Controller&lt;IMainViewModel, IScope&lt;IMainViewModel&gt;&gt; { } // {3}
  </pre>
  
  <p>I get a similar error on line {3}: "Type 'IScope&lt;IMainViewModel&gt;' does not satisfy the constraint 'IScope&lt;TViewModel extends IViewModel&gt;' for type parameter 'TScope extends IScope&lt;TViewModel&gt;'."</p>
  
  <p>Seems to me that this should work. What am I doing wrong?</p>
  
  <p>I'm pretty new to TypeScript, I mainly write code in C#, and if I write this code in C# - by just rewriting TypeScript syntax to its C# equivalent, it works just fine.</p>
  
  <p>The weirdest thing is that if I remove line {1}, both errors disappear.</p>