<p dir="auto">Consider following example:</p>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="console.log(...['Hello', 'world']);"><pre class="notranslate"><span class="pl-smi">console</span><span class="pl-kos">.</span><span class="pl-en">log</span><span class="pl-kos">(</span>...<span class="pl-kos">[</span><span class="pl-s">'Hello'</span><span class="pl-kos">,</span> <span class="pl-s">'world'</span><span class="pl-kos">]</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
<p dir="auto">It's a completely valid <code class="notranslate">console.log</code> usage scenario however TypeScript (@1.6.2) raises <strong>TS2346</strong> error: <em>Supplied parameters do not match any signature of call target</em>.</p>
<p dir="auto">The log's signature is:</p>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="declare function log(message?: any, ...optionalParams: any[]);"><pre class="notranslate"><span class="pl-s1">declare</span> <span class="pl-s1">function</span> <span class="pl-en">log</span><span class="pl-kos">(</span><span class="pl-s1">message</span>?<span class="pl-s1"></span>: <span class="pl-s1">any</span><span class="pl-kos">,</span> ...<span class="pl-s1">optionalParams</span>: <span class="pl-s1">any</span><span class="pl-kos">[</span><span class="pl-kos">]</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
<p dir="auto">Therefore following code:</p>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="console.log('Hello', ...['world']);"><pre class="notranslate"><span class="pl-smi">console</span><span class="pl-kos">.</span><span class="pl-en">log</span><span class="pl-kos">(</span><span class="pl-s">'Hello'</span><span class="pl-kos">,</span> ...<span class="pl-kos">[</span><span class="pl-s">'world'</span><span class="pl-kos">]</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
<p dir="auto">is considered valid, without any errors.</p>
<p dir="auto">In my opinion the top example should not trigger any errors.</p>
<p dir="auto">The default signature for console.log is wrong.</p>
<p dir="auto"><code class="notranslate">log(message?: any, ...optionalParams: any[]): void;</code></p>
<p dir="auto">See this code example:</p>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="function puts(...optionalParams: any[]): void {
  console.log.apply(this, arguments); // no error

  // Supplied parameters do not match any signature of call target.
  // Method Console.log(message?: any, ...optionalParams: any[]): void;
  console.log(...arguments); // see error above
}"><pre class="notranslate"><span class="pl-k">function</span> <span class="pl-en">puts</span><span class="pl-kos">(</span>...<span class="pl-s1">optionalParams</span>: <span class="pl-s1">any</span><span class="pl-kos">[</span><span class="pl-kos">]</span><span class="pl-kos">)</span>: <span class="pl-k">void</span> <span class="pl-kos">{</span>
  <span class="pl-smi">console</span><span class="pl-kos">.</span><span class="pl-c1">log</span><span class="pl-kos">.</span><span class="pl-en">apply</span><span class="pl-kos">(</span><span class="pl-smi">this</span><span class="pl-kos">,</span> <span class="pl-smi">arguments</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-c">// no error</span>

  <span class="pl-c">// Supplied parameters do not match any signature of call target.</span>
  <span class="pl-c">// Method Console.log(message?: any, ...optionalParams: any[]): void;</span>
  <span class="pl-smi">console</span><span class="pl-kos">.</span><span class="pl-en">log</span><span class="pl-kos">(</span>...<span class="pl-smi">arguments</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-c">// see error above</span>
<span class="pl-kos">}</span></pre></div>
<p dir="auto">If I update the signature to <code class="notranslate">log(...optionalParams: any[]): void;</code> then it works.</p>