title: What changed in user defined type guards since typescript 2.4
body: <p>This code works fine with typescript 2.3, but fail with typescript 2.4. Can you explain why?</p>
  
  <p>testFindTypeGuard.ts:</p>
  
  <pre><code>let el: Element;
  
  const nodes: Node[] = [];
  
  const result = nodes.find((n): n is HTMLFontElement =&gt; n.nodeName === "FONT");
  
  el = result;
  </code></pre>
  
  <p>my.d.ts:</p>
  
  <pre><code>interface Array&lt;T&gt; {
      find&lt;U extends T&gt;(predicate: (value: T, index: number, obj: Array&lt;T&gt;) =&gt; value is U): U | undefined;
  }
  </code></pre>
  
  <p>error message:</p>
  
  <blockquote>
    <p>error TS2322: Build:Type 'Node' is not assignable to type 'Element'.</p>
  </blockquote>