=== tests/cases/compiler/typeName1.ts === interface I { k; >k : any } class C { >C : C public eek:string; >eek : string static zeek:number; >zeek : number } var x1:{ f(s:string):number;f(n:number):string; }=3; >x1 : { f(s: string): number; f(n: number): string; } >f : { (s: string): number; (n: number): string; } >s : string >f : { (s: string): number; (n: number): string; } >n : number >3 : 3 var x2:{ f(s:string):number; } =3; >x2 : { f(s: string): number; } >f : (s: string) => number >s : string >3 : 3 var x3:{ (s:string):number;(n:number):string; }=3; >x3 : { (s: string): number; (n: number): string; } >s : string >n : number >3 : 3 var x4:{ x;y;z:number;f(n:number):string;f(s:string):number; }=3; >x4 : { x: any; y: any; z: number; f(n: number): string; f(s: string): number; } >x : any >y : any >z : number >f : { (n: number): string; (s: string): number; } >n : number >f : { (n: number): string; (s: string): number; } >s : string >3 : 3 var x5:{ (s:string):number;(n:number):string;x;y;z:number;f(n:number):string;f(s:string):number; }=3; >x5 : { (s: string): number; (n: number): string; x: any; y: any; z: number; f(n: number): string; f(s: string): number; } >s : string >n : number >x : any >y : any >z : number >f : { (n: number): string; (s: string): number; } >n : number >f : { (n: number): string; (s: string): number; } >s : string >3 : 3 var x6:{ z:number;f:{(n:number):string;(s:string):number;}; }=3; >x6 : { z: number; f: { (n: number): string; (s: string): number; }; } >z : number >f : { (n: number): string; (s: string): number; } >n : number >s : string >3 : 3 var x7:(s:string)=>boolean=3; >x7 : (s: string) => boolean >s : string >3 : 3 var x8:{ z:I;[s:string]:{ x; y; };[n:number]:{x; y;};():boolean; }=3; >x8 : { (): boolean; [s: string]: { x: any; y: any; }; [n: number]: { x: any; y: any; }; z: I; } >z : I >s : string >x : any >y : any >n : number >x : any >y : any >3 : 3 var x9:I=3; >x9 : I >3 : 3 var x10:I[][][][]=3; >x10 : I[][][][] >3 : 3 var x11:{z:I;x:boolean;}[][]=3; >x11 : { z: I; x: boolean; }[][] >z : I >x : boolean >3 : 3 var x12:{z:I;x:boolean;y:(s:string)=>boolean;w:{ z:I;[s:string]:{ x; y; };[n:number]:{x; y;};():boolean; };}[][]=3; >x12 : { z: I; x: boolean; y: (s: string) => boolean; w: { (): boolean; [s: string]: { x: any; y: any; }; [n: number]: { x: any; y: any; }; z: I; }; }[][] >z : I >x : boolean >y : (s: string) => boolean >s : string >w : { (): boolean; [s: string]: { x: any; y: any; }; [n: number]: { x: any; y: any; }; z: I; } >z : I >s : string >x : any >y : any >n : number >x : any >y : any >3 : 3 var x13:{ new(): number; new(n:number):number; x: string; w: {y: number;}; (): {}; } = 3; >x13 : { (): {}; new (): number; new (n: number): number; x: string; w: { y: number;}; } >n : number >x : string >w : { y: number; } >y : number >3 : 3 var x14:{ f(x:number):boolean; p; q; ():string; }=3; >x14 : { (): string; f(x: number): boolean; p: any; q: any; } >f : (x: number) => boolean >x : number >p : any >q : any >3 : 3 var x15:number=C; >x15 : number >C : typeof C