arrayOfFunctionTypes3.ts(7,5): error TS2564: Property 'foo' has no initializer and is not definitely assigned in the constructor.
arrayOfFunctionTypes3.ts(15,10): error TS2454: Variable 'a' is used before being assigned.
arrayOfFunctionTypes3.ts(15,13): error TS2454: Variable 'b' is used before being assigned.
arrayOfFunctionTypes3.ts(15,16): error TS2454: Variable 'c' is used before being assigned.
arrayOfFunctionTypes3.ts(24,11): error TS2454: Variable 'a2' is used before being assigned.
arrayOfFunctionTypes3.ts(24,15): error TS2454: Variable 'b2' is used before being assigned.
arrayOfFunctionTypes3.ts(24,19): error TS2454: Variable 'c2' is used before being assigned.


==== arrayOfFunctionTypes3.ts (7 errors) ====
    // valid uses of arrays of function types
    
    var x = [() => 1, () => { }];
    var r2 = x[0]();
    
    class C {
        foo: string;
        ~~~
!!! error TS2564: Property 'foo' has no initializer and is not definitely assigned in the constructor.
    }
    var y = [C, C];
    var r3 = new y[0]();
    
    var a: { (x: number): number; (x: string): string; };
    var b: { (x: number): number; (x: string): string; };
    var c: { (x: number): number; (x: any): any; };
    var z = [a, b, c];
             ~
!!! error TS2454: Variable 'a' is used before being assigned.
                ~
!!! error TS2454: Variable 'b' is used before being assigned.
                   ~
!!! error TS2454: Variable 'c' is used before being assigned.
    var r4 = z[0];
    var r5 = r4(''); // any not string
    var r5b = r4(1);
    
    var a2: { <T>(x: T): number; (x: string): string;};
    var b2: { <T>(x: T): number; (x: string): string; };
    var c2: { (x: number): number; <T>(x: T): any; };
    
    var z2 = [a2, b2, c2];
              ~~
!!! error TS2454: Variable 'a2' is used before being assigned.
                  ~~
!!! error TS2454: Variable 'b2' is used before being assigned.
                      ~~
!!! error TS2454: Variable 'c2' is used before being assigned.
    var r6 = z2[0];
    var r7 = r6(''); // any not string