title: How do I define interface property that is constrained by enum?
body: <p>Assuming I need to define the shape of an object, like:</p>
  <pre><code>const orange = {
     color: 'red',
     sweet: true,
     acidic: true,
     bitter: false
  }
  </code></pre>
  <p>With the <code>interface</code></p>
  <pre><code>interface Fruit {
     color: string,
     ?
  }
  </code></pre>
  <p>Where unknown part (flavors) should be constrained (only below keys are allowed, not necessarily all of them) by the following <code>enum</code>:</p>
  <pre><code>enum Taste {
     ACIDIC = 'acidic',
     SWEET = 'sweet',
     BITTER = 'bitter'
  }
  </code></pre>
  <p>With corresponding values of boolean type.</p>
  <p>I could've defined some <code>Record&lt;Taste, boolean&gt;</code>, but how do I <em>incorporate</em> that into my target <code>Fruit</code> interface, when (to make things even more complicated) I cannot define <code>Fruit</code> as a type (instead of interface), since it extends <code>Food</code> interface?</p>