<p dir="auto"><a target="_blank" rel="noopener noreferrer nofollow" href="https://cloud.githubusercontent.com/assets/2932786/9593657/294e292c-5006-11e5-903d-ad9b659d2f47.gif"><img src="https://cloud.githubusercontent.com/assets/2932786/9593657/294e292c-5006-11e5-903d-ad9b659d2f47.gif" alt="jsxcompletionsomitsimport" data-animated-image="" style="max-width: 100%;"></a></p>
<p dir="auto">It looks like it's also missing in any other JSX-expression context.</p>
<div class="highlight highlight-source-ts notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="var p = new Array&lt;string&gt;();
var q = true ? p : [];
q[0]"><pre class="notranslate"><span class="pl-k">var</span> <span class="pl-s1">p</span> <span class="pl-c1">=</span> <span class="pl-k">new</span> <span class="pl-smi">Array</span><span class="pl-kos">&lt;</span><span class="pl-smi">string</span><span class="pl-kos">&gt;</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
<span class="pl-k">var</span> <span class="pl-s1">q</span> <span class="pl-c1">=</span> <span class="pl-c1">true</span> ? <span class="pl-s1">p</span> : <span class="pl-kos">[</span><span class="pl-kos">]</span><span class="pl-kos">;</span>
<span class="pl-s1">q</span><span class="pl-kos">[</span><span class="pl-c1">0</span><span class="pl-kos">]</span></pre></div>
<p dir="auto">My reasoning follows, please correct me if I'm wrong.<br>
According to 1.5 spec, type of q[0] was calculated in the following way:</p>
<ol dir="auto">
<li>Take union type of <code class="notranslate">Array&lt;string&gt;</code> and empty array (<code class="notranslate">Array&lt;Undefined&gt;</code>).</li>
<li>Reduce that union type, which gives us <code class="notranslate">Array&lt;string&gt;</code>, because string is a supertype of undefined.</li>
<li>Widen that type (changes nothing).</li>
<li>Type of q[0] is string.</li>
</ol>
<p dir="auto">According to 1.6 spec, type of q[0] should be calculated in the following way:</p>
<ol dir="auto">
<li>Take union type of <code class="notranslate">Array&lt;string&gt;</code> and empty array (<code class="notranslate">Array&lt;Undefined&gt;</code>).</li>
<li>No reduce is happening.</li>
<li>Widen that type, resulting in <code class="notranslate">(Array&lt;string&gt; | Array&lt;any&gt;)</code>.</li>
<li>Type of q[0] is <code class="notranslate">(string | any)</code>.</li>
</ol>
<p dir="auto">But that would break "no implicit any". Where did I make a mistake?</p>