title: Function overloading is not implemented
body: <p>A request requests different interfaces according to different input values, and returns different return values. code show as below:</p>
  <pre><code>enum E {
    A,
    B,
    C,
  }
  interface Fn {
    (arg: E.A): Number;
    (arg: E.B): String;
    (arg: E.C): null;
  }
  const fn: Fn = (arg: E) =&gt; {
    switch (arg) {
      case E.A:
        return 1;
      case E.B:
        return '1';
      default:
        return null;
    }
  };
  
  </code></pre>
  <p>It can be inferred correctly when used, but getSelectList reports an error message:</p>
  <pre><code>const fn: Fn
  'fn' is declared but its value is never read.ts(6133)
  Type '(arg: E) =&gt; 1 | &quot;1&quot; | null' is not assignable to type 'Fn'.
    Type 'string | number | null' is not assignable to type 'Number'.
      Type 'null' is not assignable to type 'Number'.ts(2322)
  </code></pre>
  <p>seem like this<a href="https://github.com/microsoft/TypeScript/issues/33014" rel="nofollow noreferrer">https://github.com/microsoft/TypeScript/issues/33014</a></p>
  <pre><code>enum E {
    A,
    B,
    C,
  }
  type FF&lt;A extends E&gt; = A extends E.A
    ? Number
    : A extends E.B
      ? String
      : null;
  
  const fn = &lt;A extends E&gt;(arg: A): FF&lt;A&gt; =&gt; {
    switch (arg) {
      case E.A:
  // error: Type '1' is not assignable to type 'FF&lt;A&gt;'
        return 1;
      case E.B:
        return '1';
      default:
        return null;
    }
  };
  
  fn(E.A);
  </code></pre>