title: Array.prototype.includes give me "Argument of type 'string' is not assignable to parameter of type 'never'." error
body: <p>The type of <code>keys</code> is <code>string[] | number[]</code>, derived from <code>ID</code> type.
  The type of <code>id</code> is <code>ID</code>. Try to check if <code>keys</code> includes the <code>id</code>.</p>
  <pre><code>import React, { useState } from 'react';
  
  type DistributedArray&lt;U&gt; = U extends any ? U[] : never;
  type ID = string | number;
  
  function Comp() {
      const [keys, setKeys] = useState&lt;DistributedArray&lt;ID&gt;&gt;([]);
      const id: ID = '1';
      keys.includes(id)
  
      return null;
  }
  </code></pre>
  <p>TSC throws an error in <code>keys.includes(id)</code> statement.</p>
  <blockquote>
  <p>Argument of type 'string' is not assignable to parameter of type 'never'.</p>
  </blockquote>
  <p>From a JS perspective, the code is fine.</p>
  <p><a href="https://www.typescriptlang.org/play?#code/JYWwDg9gTgLgBAJQKYEMDGMA0cDecCuAzkgMowoxJwC+cAZlBCHAORSoYsDcAUDzAE8wVACLBCMKMABG+SgBMAglCgoBAHgCqAPjgBeOJrhIAHpQB28wnBTmBcAPyGA2gF04ALjjmkANyRQvILCcACSIvpwElLmAOZwAD7e+CDSAbw8dPjmGMAQ5nAAwkxgABQAlLg8cDVwaPkScM4A1kgChNjEMADSbYTuBkSk5JTqYtEyckhKKmrq4drapW7lvLV1DfDA8l7hkSwAjNzVta3tAHTAOQA2+PJIhKXb5Xzr7DD4UAXm+NfXvNQeEA" rel="nofollow noreferrer">TypeScript Playground</a></p>
  <p>version: TypeScript 4.5.2</p>