What is the benefit of using '--strictFunctionTypes' in Typescript? : <p>As I understand it, <code>--strictFunctionTypes</code> compiler option in Typescript prevents a very common use case of polymorphism from working:</p>

<pre><code>type Handler = (request: Request) =&gt; Response

const myHandler: Handler = (request: Request &amp; { extraArg: boolean }) =&gt; {
  return !!request.extraArg
}
</code></pre>

<p>Generally, I assume that all compiler options in the <code>strict</code> family have some great benefits, but in this case, all I see is that it prevents a very logical behavior from working.</p>

<p>So what are the cases where this option actually gives some benefits? Which harmful scenarios does it prevent?</p>
