title: Return arbitrary value type in Object
body: <p>If I have an object with many keys and each value in each key has different value type</p>
  <pre><code>type keys = 'typeA' | 'typeB' | ... | 'typeZZZ'
  const obj = {
   'typeA': typeA,
   'typeB': typB,
  ...
  'typeZZZ': typeZZZ
  }
  
  const destruct = (key: keys): /* what's the return type I can specify? */ =&gt; {
    return obj[key] // &lt;- how should I narrow type here?
  }
  
  const typeA = destruct('typeA') // &lt;- I want this value type to be `typeA` without using as or if statement
  
  </code></pre>
  <p>Is it possible to do it?</p>