<p dir="auto">Hi,</p>
<p dir="auto"><strong>Version</strong>: VS 2015/TS 1.5.4</p>
<p dir="auto">I have the following settings.</p>
<p dir="auto">On the "Build" settings page I have<br>
<a target="_blank" rel="noopener noreferrer nofollow" href="https://cloud.githubusercontent.com/assets/1106823/9156813/ef56d8f0-3ede-11e5-8004-cb3c6eaa4d7a.png"><img src="https://cloud.githubusercontent.com/assets/1106823/9156813/ef56d8f0-3ede-11e5-8004-cb3c6eaa4d7a.png" alt="image" style="max-width: 100%;"></a></p>
<p dir="auto">On the "TypeScript Build" settings page I have<br>
<a target="_blank" rel="noopener noreferrer nofollow" href="https://cloud.githubusercontent.com/assets/1106823/9156820/16b1662c-3edf-11e5-9dd2-0ac408bf74c0.png"><img src="https://cloud.githubusercontent.com/assets/1106823/9156820/16b1662c-3edf-11e5-9dd2-0ac408bf74c0.png" alt="image" style="max-width: 100%;"></a></p>
<p dir="auto">When I build the whole project, things work correctly and the output is written to <code class="notranslate">bin</code>.</p>
<p dir="auto">However, compile-on-save writes the output to a folder called <code class="notranslate">$(OutDir)</code>.</p>
<p dir="auto"><a target="_blank" rel="noopener noreferrer nofollow" href="https://cloud.githubusercontent.com/assets/1106823/9156828/86f480a4-3edf-11e5-97bf-42fd3dc1aefe.png"><img src="https://cloud.githubusercontent.com/assets/1106823/9156828/86f480a4-3edf-11e5-97bf-42fd3dc1aefe.png" alt="image" style="max-width: 100%;"></a></p>
<p dir="auto">A function can choose to omit parameters defined in a signature, as shown by function <code class="notranslate">a</code> below. Callers of <code class="notranslate">a</code> must still supply arguments, but the function does not need to use them.</p>
<p dir="auto">Despite this, if the same function is assigned later in the program, this no longer applies and the identical function is now not compatible, as shown with function <code class="notranslate">b</code>.</p>
<div class="highlight highlight-source-ts notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="interface X {
    (source: number): boolean;
}

var a: X = function() { return true; }

var b: X;
// Why is this an error?
var b = function() { return true; }"><pre class="notranslate"><span class="pl-k">interface</span> <span class="pl-smi">X</span> <span class="pl-kos">{</span>
    <span class="pl-kos">(</span><span class="pl-s1">source</span>: <span class="pl-smi">number</span><span class="pl-kos">)</span>: <span class="pl-smi">boolean</span><span class="pl-kos">;</span>
<span class="pl-kos">}</span>

<span class="pl-k">var</span> <span class="pl-en">a</span>: <span class="pl-smi">X</span> <span class="pl-c1">=</span> <span class="pl-k">function</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-k">return</span> <span class="pl-c1">true</span><span class="pl-kos">;</span> <span class="pl-kos">}</span>

<span class="pl-k">var</span> <span class="pl-s1">b</span>: <span class="pl-smi">X</span><span class="pl-kos">;</span>
<span class="pl-c">// Why is this an error?</span>
<span class="pl-k">var</span> <span class="pl-en">b</span> <span class="pl-c1">=</span> <span class="pl-k">function</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-k">return</span> <span class="pl-c1">true</span><span class="pl-kos">;</span> <span class="pl-kos">}</span></pre></div>
<p dir="auto">Shouldn't both of these cases follow the same rules?</p>