title: Why isn't it assigned, although Array is covariant?
body: <p>Why can be assigned hoge2 and hoge3 but not assigned to hoge1?</p>
  
  <pre class="lang-js prettyprint-override"><code>const hoge1: { foo: string }[] = [{ foo: 'test', extraVal: 1 }];  // compile error
  // Type '{ foo: string; extraVal: number; }' is not assignable to type '{ foo: string; }'.
  //   Object literal may only specify known properties, and 'extraVal' does not exist in type '{ foo: string; }'.  TS2322
  
  const val = [{ foo: 'test', extraVal: 1 }];
  const hoge2: { foo: string }[] = val;  // ok
  
  const hoge3: { foo: string }[] = (() =&gt; [{ foo: 'test', extraVal: 1 }])();  // ok
  </code></pre>