<div class="highlight highlight-source-ts notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="type Boots = 'boots';
let lala = {
    nowBoots(saying: Boots): void; // works
    nowCats(saying: 'cats'): void; // doesn't works
}"><pre class="notranslate"><span class="pl-k">type</span> <span class="pl-smi">Boots</span> <span class="pl-c1">=</span> <span class="pl-s">'boots'</span><span class="pl-kos">;</span>
<span class="pl-k">let</span> <span class="pl-s1">lala</span> <span class="pl-c1">=</span> <span class="pl-kos">{</span>
    <span class="pl-c1">nowBoots</span><span class="pl-kos">(</span><span class="pl-s1">saying</span>: <span class="pl-smi">Boots</span><span class="pl-kos">)</span>: <span class="pl-smi"><span class="pl-k">void</span></span><span class="pl-kos">;</span> <span class="pl-c">// works</span>
    <span class="pl-en">nowCats</span><span class="pl-kos">(</span><span class="pl-s1">saying</span>: <span class="pl-s">'cats'</span><span class="pl-kos">)</span>: <span class="pl-k">void</span><span class="pl-kos">;</span> <span class="pl-c">// doesn't works</span>
<span class="pl-kos">}</span></pre></div>
<p dir="auto">Specialized signatures needing to be compatible with an overload was an artificial requirement due to issues in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="46547257" data-permission-text="Title is private" data-url="https://github.com/microsoft/TypeScript/issues/943" data-hovercard-type="issue" data-hovercard-url="/microsoft/TypeScript/issues/943/hovercard" href="https://github.com/microsoft/TypeScript/issues/943">#943</a>. Now that we've fixed that, we should consider what we're going to do with this rule.</p>
<p dir="auto">Could we remove it wholesale? That would potentially be a breaking change, but it seems like good one. Basically, the situations you'd run into this would be where you have something like the following...</p>
<div class="highlight highlight-source-ts notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="function doThing(x: &quot;dog&quot;): Dog;
function doThing(x: &quot;cat&quot;): Cat;
function doThing(x: string): Animal;
function doThing(x: string, y?: string): Moose {
}"><pre class="notranslate"><span class="pl-k">function</span> <span class="pl-s1">doThing</span><span class="pl-kos">(</span><span class="pl-s1">x</span>: <span class="pl-s">"dog"</span><span class="pl-kos">)</span>: <span class="pl-smi">Dog</span><span class="pl-kos">;</span>
<span class="pl-k">function</span> <span class="pl-s1">doThing</span><span class="pl-kos">(</span><span class="pl-s1">x</span>: <span class="pl-s">"cat"</span><span class="pl-kos">)</span>: <span class="pl-smi">Cat</span><span class="pl-kos">;</span>
<span class="pl-k">function</span> <span class="pl-s1">doThing</span><span class="pl-kos">(</span><span class="pl-s1">x</span>: <span class="pl-smi">string</span><span class="pl-kos">)</span>: <span class="pl-smi">Animal</span><span class="pl-kos">;</span>
<span class="pl-k">function</span> <span class="pl-en">doThing</span><span class="pl-kos">(</span><span class="pl-s1">x</span>: <span class="pl-smi">string</span><span class="pl-kos">,</span> <span class="pl-s1">y</span>?: <span class="pl-smi">string</span><span class="pl-kos">)</span>: <span class="pl-smi">Moose</span> <span class="pl-kos">{</span>
<span class="pl-kos">}</span></pre></div>
<p dir="auto">Where now we'd check if the implementation was assignable to the specialized signatures and give an error. That seems like a good change.</p>