title: How to define self referencing extendable interface with optional type?
body: <p>Let's say I have menu interface:</p>
  
  <pre><code>interface IMenuBase {
      id: number;
      title: string;
      items: IMenuBase[]; &lt;- children 
  }
  </code></pre>
  
  <p>Now I want to extend it. For this purpose I define another interface:</p>
  
  <pre><code>interface ICustomMenu extend IMenuBase {
      concrete: string;
  }
  </code></pre>
  
  <p>The probleme is, <code>items</code> is still an IMenuBase.</p>
  
  <p>I've tried to solve it this way:</p>
  
  <pre><code>interface IMenuBase&lt;T extends IMenuBase&lt;T&gt;&gt; {
      id: number;
      title: string;
      items: T[];
  }
  
  interface ICustomMenu extends IMenuBase&lt;ICustomMenu&gt; {
      concrete: string;
  }
  </code></pre>
  
  <p>But now I want to be able to use IMenuBase without type.
  Here is my <a href="http://www.typescriptlang.org/play/#src=interface%20IMenuBase%3CT%20extends%20IMenuBase%3CT%3E%3E%20%7B%0D%0A%20%20%20%20id%3A%20number%3B%0D%0A%20%20%20%20title%3A%20string%3B%0D%0A%20%20%20%20items%3A%20T%5B%5D%3B%0D%0A%7D%0D%0A%0D%0Ainterface%20ICustomMenu%20extends%20IMenuBase%3CICustomMenu%3E%20%7B%0D%0A%20%20%20%20concrete%3A%20string%3B%0D%0A%7D%0D%0A%0D%0Aconst%20testBase%20%3D%20%7B%7D%20as%20IMenuBase%3B%0D%0AtestBase.items%5B0%5D.items%5B0%5D.id%3B%0D%0A%0D%0Aconst%20testConcrete%20%3D%20%7B%7D%20as%20ICustomMenu%3B%0D%0AtestConcrete.items%5B0%5D.items%5B0%5D.concrete%3B" rel="nofollow noreferrer">playground</a>.</p>