<p dir="auto"><strong>TypeScript Version:</strong></p>
<p dir="auto">1.8.0</p>
<p dir="auto"><strong>Code</strong></p>
<div class="highlight highlight-source-ts notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="interface A {
    name: string;
    age: number;
}

interface AExtension {
    name?: string;
    age?: number;
}

interface B {
    key: string;
    value: boolean;
}

interface BExtension {
    key?: string;
    value?: boolean;
}

function extend(base: A, extension: AExtension);
function extend(base: B, extension: BExtension);
function extend&lt;T&gt;(base: T, extension: any) {

}

const b : B = { key: '...', value: true };

extend(b, { key: '' });
"><pre class="notranslate"><span class="pl-k">interface</span> <span class="pl-smi">A</span> <span class="pl-kos">{</span>
    <span class="pl-c1">name</span>: <span class="pl-smi">string</span><span class="pl-kos">;</span>
    <span class="pl-c1">age</span>: <span class="pl-smi">number</span><span class="pl-kos">;</span>
<span class="pl-kos">}</span>

<span class="pl-k">interface</span> <span class="pl-smi">AExtension</span> <span class="pl-kos">{</span>
    <span class="pl-c1">name</span>?: <span class="pl-smi">string</span><span class="pl-kos">;</span>
    <span class="pl-c1">age</span>?: <span class="pl-smi">number</span><span class="pl-kos">;</span>
<span class="pl-kos">}</span>

<span class="pl-k">interface</span> <span class="pl-smi">B</span> <span class="pl-kos">{</span>
    <span class="pl-c1">key</span>: <span class="pl-smi">string</span><span class="pl-kos">;</span>
    <span class="pl-c1">value</span>: <span class="pl-smi">boolean</span><span class="pl-kos">;</span>
<span class="pl-kos">}</span>

<span class="pl-k">interface</span> <span class="pl-smi">BExtension</span> <span class="pl-kos">{</span>
    <span class="pl-c1">key</span>?: <span class="pl-smi">string</span><span class="pl-kos">;</span>
    <span class="pl-c1">value</span>?: <span class="pl-smi">boolean</span><span class="pl-kos">;</span>
<span class="pl-kos">}</span>

<span class="pl-k">function</span> <span class="pl-s1">extend</span><span class="pl-kos">(</span><span class="pl-s1">base</span>: <span class="pl-smi">A</span><span class="pl-kos">,</span> <span class="pl-s1">extension</span>: <span class="pl-smi">AExtension</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
<span class="pl-k">function</span> <span class="pl-s1">extend</span><span class="pl-kos">(</span><span class="pl-s1">base</span>: <span class="pl-smi">B</span><span class="pl-kos">,</span> <span class="pl-s1">extension</span>: <span class="pl-smi">BExtension</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
<span class="pl-k">function</span> <span class="pl-en">extend</span><span class="pl-c1">&lt;</span><span class="pl-smi">T</span><span class="pl-c1">&gt;</span><span class="pl-kos">(</span><span class="pl-s1">base</span>: <span class="pl-smi">T</span><span class="pl-kos">,</span> <span class="pl-s1">extension</span>: <span class="pl-smi">any</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>

<span class="pl-kos">}</span>

<span class="pl-k">const</span> <span class="pl-s1">b</span> : <span class="pl-smi">B</span> <span class="pl-c1">=</span> <span class="pl-kos">{</span> <span class="pl-c1">key</span>: <span class="pl-s">'...'</span><span class="pl-kos">,</span> <span class="pl-c1">value</span>: <span class="pl-c1">true</span> <span class="pl-kos">}</span><span class="pl-kos">;</span>

<span class="pl-en">extend</span><span class="pl-kos">(</span><span class="pl-s1">b</span><span class="pl-kos">,</span> <span class="pl-kos">{</span> <span class="pl-c1">key</span>: <span class="pl-s">''</span> <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
<p dir="auto"><strong>Expected behavior:</strong><br>
Code completion for second parameter of <code class="notranslate">extend</code> shows properties of <code class="notranslate">BExtension</code>.</p>
<p dir="auto"><strong>Actual behavior:</strong><br>
Code completion for second parameter of <code class="notranslate">extend</code> shows properties of <code class="notranslate">AExtension</code>.</p>
<p dir="auto"><a target="_blank" rel="noopener noreferrer nofollow" href="https://cloud.githubusercontent.com/assets/2046557/14424547/fbd37a88-ffe1-11e5-9c66-8ebc8be160e8.png"><img src="https://cloud.githubusercontent.com/assets/2046557/14424547/fbd37a88-ffe1-11e5-9c66-8ebc8be160e8.png" alt="image" style="max-width: 100%;"></a></p>
<div class="highlight highlight-source-css notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="smile:before {
  content: &quot;\200B&quot;;
}"><pre class="notranslate"><span class="pl-ent">smile</span><span class="pl-kos">:</span><span class="pl-c1">before</span> {
  <span class="pl-c1">content</span><span class="pl-kos">:</span> <span class="pl-s">"\200B"</span>;
}</pre></div>
<p dir="auto">Is compressed to</p>
<div class="highlight highlight-source-css notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="smile:before {
  content: &quot;200B&quot;;
}"><pre class="notranslate"><span class="pl-ent">smile</span><span class="pl-kos">:</span><span class="pl-c1">before</span> {
  <span class="pl-c1">content</span><span class="pl-kos">:</span> <span class="pl-s">"200B"</span>;
}</pre></div>
<p dir="auto"><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="126945477" data-permission-text="Title is private" data-url="https://github.com/mgechev/angular-seed/issues/390" data-hovercard-type="issue" data-hovercard-url="/mgechev/angular-seed/issues/390/hovercard" href="https://github.com/mgechev/angular-seed/issues/390">mgechev/angular-seed#390</a></p>