tests/cases/compiler/strictSubtypeReduction.ts(29,7): error TS2322: Type '((a: number) => void)[]' is not assignable to type '((ctrl: string | number) => void)[]'.
  Type '(a: number) => void' is not assignable to type '(ctrl: string | number) => void'.
    Types of parameters 'a' and 'ctrl' are incompatible.
      Type 'string | number' is not assignable to type 'number'.
        Type 'string' is not assignable to type 'number'.
tests/cases/compiler/strictSubtypeReduction.ts(30,7): error TS2322: Type '((a: number) => void)[]' is not assignable to type '((ctrl: string | number) => void)[]'.
  Type '(a: number) => void' is not assignable to type '(ctrl: string | number) => void'.
    Types of parameters 'a' and 'ctrl' are incompatible.
      Type 'string | number' is not assignable to type 'number'.
        Type 'string' is not assignable to type 'number'.
tests/cases/compiler/strictSubtypeReduction.ts(31,7): error TS2322: Type '((a: number) => void)[]' is not assignable to type '((ctrl: string | number) => void)[]'.
  Type '(a: number) => void' is not assignable to type '(ctrl: string | number) => void'.
    Types of parameters 'a' and 'ctrl' are incompatible.
      Type 'string | number' is not assignable to type 'number'.
        Type 'string' is not assignable to type 'number'.
tests/cases/compiler/strictSubtypeReduction.ts(32,7): error TS2322: Type '((a: number) => void)[]' is not assignable to type '((ctrl: string | number) => void)[]'.
  Type '(a: number) => void' is not assignable to type '(ctrl: string | number) => void'.
    Types of parameters 'a' and 'ctrl' are incompatible.
      Type 'string | number' is not assignable to type 'number'.
        Type 'string' is not assignable to type 'number'.


==== tests/cases/compiler/strictSubtypeReduction.ts (4 errors) ====
    // Repro from #41977
    
    class S1 {
      static f(a: number | string): void {}
    }
    
    class S2 {
      static f(a: number): void {}
      static g(a: number): void {}
    }
    
    function f(a: number): void {}
    function g(a: number): void {}
    
    // Declaring the following type aliases should have no effect
    
    type T1 = typeof S2.g;
    type T2 = typeof g;
    
    // All should have type ((a: number) => void)[]
    
    const y1 = [S1.f, f];
    const y2 = [S1.f, g];
    const y3 = [S1.f, S2.f];
    const y4 = [S1.f, S2.g];
    
    // All assignments should be errors
    
    const x1: ((ctrl: number | string) => void)[] = y1;
          ~~
!!! error TS2322: Type '((a: number) => void)[]' is not assignable to type '((ctrl: string | number) => void)[]'.
!!! error TS2322:   Type '(a: number) => void' is not assignable to type '(ctrl: string | number) => void'.
!!! error TS2322:     Types of parameters 'a' and 'ctrl' are incompatible.
!!! error TS2322:       Type 'string | number' is not assignable to type 'number'.
!!! error TS2322:         Type 'string' is not assignable to type 'number'.
    const x2: ((ctrl: number | string) => void)[] = y2;
          ~~
!!! error TS2322: Type '((a: number) => void)[]' is not assignable to type '((ctrl: string | number) => void)[]'.
!!! error TS2322:   Type '(a: number) => void' is not assignable to type '(ctrl: string | number) => void'.
!!! error TS2322:     Types of parameters 'a' and 'ctrl' are incompatible.
!!! error TS2322:       Type 'string | number' is not assignable to type 'number'.
!!! error TS2322:         Type 'string' is not assignable to type 'number'.
    const x3: ((ctrl: number | string) => void)[] = y3;
          ~~
!!! error TS2322: Type '((a: number) => void)[]' is not assignable to type '((ctrl: string | number) => void)[]'.
!!! error TS2322:   Type '(a: number) => void' is not assignable to type '(ctrl: string | number) => void'.
!!! error TS2322:     Types of parameters 'a' and 'ctrl' are incompatible.
!!! error TS2322:       Type 'string | number' is not assignable to type 'number'.
!!! error TS2322:         Type 'string' is not assignable to type 'number'.
    const x4: ((ctrl: number | string) => void)[] = y4;
          ~~
!!! error TS2322: Type '((a: number) => void)[]' is not assignable to type '((ctrl: string | number) => void)[]'.
!!! error TS2322:   Type '(a: number) => void' is not assignable to type '(ctrl: string | number) => void'.
!!! error TS2322:     Types of parameters 'a' and 'ctrl' are incompatible.
!!! error TS2322:       Type 'string | number' is not assignable to type 'number'.
!!! error TS2322:         Type 'string' is not assignable to type 'number'.
    