tests/cases/compiler/interfacedeclWithIndexerErrors.ts(12,5): error TS2411: Property 'p2' of type 'string' is not assignable to string index type '() => string'.
tests/cases/compiler/interfacedeclWithIndexerErrors.ts(14,5): error TS2411: Property 'p4' of type 'number' is not assignable to string index type '() => string'.
tests/cases/compiler/interfacedeclWithIndexerErrors.ts(15,5): error TS2411: Property 'p5' of type '(s: number) => string' is not assignable to string index type '() => string'.
tests/cases/compiler/interfacedeclWithIndexerErrors.ts(19,5): error TS2411: Property 'f3' of type '(a: string) => number' is not assignable to string index type '() => string'.
tests/cases/compiler/interfacedeclWithIndexerErrors.ts(20,5): error TS2411: Property 'f4' of type '(s: number) => string' is not assignable to string index type '() => string'.


==== tests/cases/compiler/interfacedeclWithIndexerErrors.ts (5 errors) ====
    interface a0 {
        (): string;
        (a, b, c?: string): number;
        
        new (): string;
        new (s: string);
    
        [n: number]: ()=>string;
        [s: string]: ()=>string;
    
        p1;
        p2: string;
        ~~
!!! error TS2411: Property 'p2' of type 'string' is not assignable to string index type '() => string'.
        p3?;
        p4?: number;
        ~~
!!! error TS2411: Property 'p4' of type 'number' is not assignable to string index type '() => string'.
        p5: (s: number) =>string;
        ~~
!!! error TS2411: Property 'p5' of type '(s: number) => string' is not assignable to string index type '() => string'.
    
        f1();
        f2? ();
        f3(a: string): number;
        ~~~~~~~~~~~~~~~~~~~~~~
!!! error TS2411: Property 'f3' of type '(a: string) => number' is not assignable to string index type '() => string'.
        f4? (s: number): string;
        ~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS2411: Property 'f4' of type '(s: number) => string' is not assignable to string index type '() => string'.
    }
    
    
    interface a1 {
        [n: number]: number;
    }
    
    interface a2 {
        [s: string]: number;
    }
    
    interface a {
    }
    
    interface b extends a {
    }
    
    interface c extends a, b {
    }
    
    interface d extends a {
    }
    
    class c1 implements a {
    }
    var instance2 = new c1();