title: Typescript conversion from interface to recursive type throws an Index signature is missing in type error
body: <p><a href="https://www.typescriptlang.org/play?#code/C4TwDgpgBAyhBOBLAhgG0QL2QI1dAvAFBRQA+UAzsEgHYDmxZUNArgLbYKPnYD2veZDW7MWqVCJY0AJhABmiGhGki4SNJhx4AgvHjIQqhCnRZcEAEoQAxr3jSA3IUKLgCOcmvQ1Jzed36IFAQAB5uMhRQAQYAPD4aZngAfFAA3gC+LjRu8B5esMYJWpY2dtLBYRARUFa29jFUtHQANAXqpsUpGc5ZOXnQAKKV8DRoAJLZ7p7QqYxQyMDUAFyU1Ip0TpmEtjRUUCErQzmjqBN901D4aQvLUADkyHfpTjt7ICvxHea1ZZf7TtteLsBBAAHSoXh0AAUIAAlA4gA" rel="nofollow noreferrer">Live Example</a></p>
  <p>I have defined a recursive <code>SerializableRecord</code> interface that I defined with the help of <a href="https://github.com/microsoft/TypeScript/pull/33050" rel="nofollow noreferrer">recursive type references</a>. <strong>This interface can be changed</strong>.</p>
  <pre class="lang-ts prettyprint-override"><code>type Serializable =
    | string
    | number
    | boolean
    | null
    | undefined
    | SerializableArray
    | SerializableRecord;
  
  interface SerializableArray extends Array&lt;Serializable&gt; {}
  interface SerializableRecord extends Record&lt;string, Serializable&gt; {}
  
  </code></pre>
  <p>I have another <strong>imported</strong> interface (which means I can't change it):</p>
  <pre><code>interface ExternalInterface {
     attr: string;
  }
  </code></pre>
  <p>Now if I try to do the following I get an error:</p>
  <pre><code>const x: ExternalInterface = {attr: 'a'};
  const y: SerializableRecord = x;
  // Throws a TS error: &quot;Index signature is missing in type 'ExternalInterface'&quot;
     
  </code></pre>
  <p>Is there a way to make those two entities compatible, without introducing <code>any</code> or <code>unknown</code>?</p>