=== tests/cases/conformance/types/specifyingTypes/typeLiterals/arrayOfFunctionTypes3.ts === // valid uses of arrays of function types var x = [() => 1, () => { }]; >x : (() => void)[], Symbol(x, Decl(arrayOfFunctionTypes3.ts, 2, 3)) >[() => 1, () => { }] : (() => void)[] >() => 1 : () => number >1 : number >() => { } : () => void var r2 = x[0](); >r2 : void, Symbol(r2, Decl(arrayOfFunctionTypes3.ts, 3, 3)) >x[0]() : void >x[0] : () => void >x : (() => void)[], Symbol(x, Decl(arrayOfFunctionTypes3.ts, 2, 3)) >0 : number class C { >C : C, Symbol(C, Decl(arrayOfFunctionTypes3.ts, 3, 16)) foo: string; >foo : string, Symbol(foo, Decl(arrayOfFunctionTypes3.ts, 5, 9)) } var y = [C, C]; >y : typeof C[], Symbol(y, Decl(arrayOfFunctionTypes3.ts, 8, 3)) >[C, C] : typeof C[] >C : typeof C, Symbol(C, Decl(arrayOfFunctionTypes3.ts, 3, 16)) >C : typeof C, Symbol(C, Decl(arrayOfFunctionTypes3.ts, 3, 16)) var r3 = new y[0](); >r3 : C, Symbol(r3, Decl(arrayOfFunctionTypes3.ts, 9, 3)) >new y[0]() : C >y[0] : typeof C >y : typeof C[], Symbol(y, Decl(arrayOfFunctionTypes3.ts, 8, 3)) >0 : number var a: { (x: number): number; (x: string): string; }; >a : { (x: number): number; (x: string): string; }, Symbol(a, Decl(arrayOfFunctionTypes3.ts, 11, 3)) >x : number, Symbol(x, Decl(arrayOfFunctionTypes3.ts, 11, 10)) >x : string, Symbol(x, Decl(arrayOfFunctionTypes3.ts, 11, 31)) var b: { (x: number): number; (x: string): string; }; >b : { (x: number): number; (x: string): string; }, Symbol(b, Decl(arrayOfFunctionTypes3.ts, 12, 3)) >x : number, Symbol(x, Decl(arrayOfFunctionTypes3.ts, 12, 10)) >x : string, Symbol(x, Decl(arrayOfFunctionTypes3.ts, 12, 31)) var c: { (x: number): number; (x: any): any; }; >c : { (x: number): number; (x: any): any; }, Symbol(c, Decl(arrayOfFunctionTypes3.ts, 13, 3)) >x : number, Symbol(x, Decl(arrayOfFunctionTypes3.ts, 13, 10)) >x : any, Symbol(x, Decl(arrayOfFunctionTypes3.ts, 13, 31)) var z = [a, b, c]; >z : { (x: number): number; (x: any): any; }[], Symbol(z, Decl(arrayOfFunctionTypes3.ts, 14, 3)) >[a, b, c] : { (x: number): number; (x: any): any; }[] >a : { (x: number): number; (x: string): string; }, Symbol(a, Decl(arrayOfFunctionTypes3.ts, 11, 3)) >b : { (x: number): number; (x: string): string; }, Symbol(b, Decl(arrayOfFunctionTypes3.ts, 12, 3)) >c : { (x: number): number; (x: any): any; }, Symbol(c, Decl(arrayOfFunctionTypes3.ts, 13, 3)) var r4 = z[0]; >r4 : { (x: number): number; (x: any): any; }, Symbol(r4, Decl(arrayOfFunctionTypes3.ts, 15, 3)) >z[0] : { (x: number): number; (x: any): any; } >z : { (x: number): number; (x: any): any; }[], Symbol(z, Decl(arrayOfFunctionTypes3.ts, 14, 3)) >0 : number var r5 = r4(''); // any not string >r5 : any, Symbol(r5, Decl(arrayOfFunctionTypes3.ts, 16, 3)) >r4('') : any >r4 : { (x: number): number; (x: any): any; }, Symbol(r4, Decl(arrayOfFunctionTypes3.ts, 15, 3)) >'' : string var r5b = r4(1); >r5b : number, Symbol(r5b, Decl(arrayOfFunctionTypes3.ts, 17, 3)) >r4(1) : number >r4 : { (x: number): number; (x: any): any; }, Symbol(r4, Decl(arrayOfFunctionTypes3.ts, 15, 3)) >1 : number var a2: { (x: T): number; (x: string): string;}; >a2 : { (x: T): number; (x: string): string; }, Symbol(a2, Decl(arrayOfFunctionTypes3.ts, 19, 3)) >T : T, Symbol(T, Decl(arrayOfFunctionTypes3.ts, 19, 11)) >x : T, Symbol(x, Decl(arrayOfFunctionTypes3.ts, 19, 14)) >T : T, Symbol(T, Decl(arrayOfFunctionTypes3.ts, 19, 11)) >x : string, Symbol(x, Decl(arrayOfFunctionTypes3.ts, 19, 30)) var b2: { (x: T): number; (x: string): string; }; >b2 : { (x: T): number; (x: string): string; }, Symbol(b2, Decl(arrayOfFunctionTypes3.ts, 20, 3)) >T : T, Symbol(T, Decl(arrayOfFunctionTypes3.ts, 20, 11)) >x : T, Symbol(x, Decl(arrayOfFunctionTypes3.ts, 20, 14)) >T : T, Symbol(T, Decl(arrayOfFunctionTypes3.ts, 20, 11)) >x : string, Symbol(x, Decl(arrayOfFunctionTypes3.ts, 20, 30)) var c2: { (x: number): number; (x: T): any; }; >c2 : { (x: number): number; (x: T): any; }, Symbol(c2, Decl(arrayOfFunctionTypes3.ts, 21, 3)) >x : number, Symbol(x, Decl(arrayOfFunctionTypes3.ts, 21, 11)) >T : T, Symbol(T, Decl(arrayOfFunctionTypes3.ts, 21, 32)) >x : T, Symbol(x, Decl(arrayOfFunctionTypes3.ts, 21, 35)) >T : T, Symbol(T, Decl(arrayOfFunctionTypes3.ts, 21, 32)) var z2 = [a2, b2, c2]; >z2 : { (x: number): number; (x: T): any; }[], Symbol(z2, Decl(arrayOfFunctionTypes3.ts, 23, 3)) >[a2, b2, c2] : { (x: number): number; (x: T): any; }[] >a2 : { (x: T): number; (x: string): string; }, Symbol(a2, Decl(arrayOfFunctionTypes3.ts, 19, 3)) >b2 : { (x: T): number; (x: string): string; }, Symbol(b2, Decl(arrayOfFunctionTypes3.ts, 20, 3)) >c2 : { (x: number): number; (x: T): any; }, Symbol(c2, Decl(arrayOfFunctionTypes3.ts, 21, 3)) var r6 = z2[0]; >r6 : { (x: number): number; (x: T): any; }, Symbol(r6, Decl(arrayOfFunctionTypes3.ts, 24, 3)) >z2[0] : { (x: number): number; (x: T): any; } >z2 : { (x: number): number; (x: T): any; }[], Symbol(z2, Decl(arrayOfFunctionTypes3.ts, 23, 3)) >0 : number var r7 = r6(''); // any not string >r7 : any, Symbol(r7, Decl(arrayOfFunctionTypes3.ts, 25, 3)) >r6('') : any >r6 : { (x: number): number; (x: T): any; }, Symbol(r6, Decl(arrayOfFunctionTypes3.ts, 24, 3)) >'' : string