=== tests/cases/compiler/castTest.ts === var x : any = 0; >x : any >0 : number var z = x; >z : number > x : number >x : any var y = x + z; >y : any >x + z : any >x : any >z : number var a = 0; >a : any >0 : any >0 : number var b = true; >b : boolean >true : boolean >true : boolean var s = ""; >s : string >"" : string >"" : string var ar = null; >ar : any[] >null : any[] >null : null var f = <(res : number) => void>null; >f : (res: number) => void ><(res : number) => void>null : (res: number) => void >res : number >null : null declare class Point >Point : Point { x: number; >x : number y: number; >y : number add(dx: number, dy: number): Point; >add : (dx: number, dy: number) => Point >dx : number >dy : number >Point : Point mult(p: Point): Point; >mult : (p: Point) => Point >p : Point >Point : Point >Point : Point constructor(x: number, y: number); >x : number >y : number } var p_cast = ({ >p_cast : Point > ({ x: 0, y: 0, add: function(dx, dy) { return new Point(this.x + dx, this.y + dy); }, mult: function(p) { return p; }}) : Point >Point : Point >({ x: 0, y: 0, add: function(dx, dy) { return new Point(this.x + dx, this.y + dy); }, mult: function(p) { return p; }}) : { x: number; y: number; add: (dx: number, dy: number) => Point; mult: (p: Point) => Point; } >{ x: 0, y: 0, add: function(dx, dy) { return new Point(this.x + dx, this.y + dy); }, mult: function(p) { return p; }} : { x: number; y: number; add: (dx: number, dy: number) => Point; mult: (p: Point) => Point; } x: 0, >x : number >0 : number y: 0, >y : number >0 : number add: function(dx, dy) { >add : (dx: number, dy: number) => Point >function(dx, dy) { return new Point(this.x + dx, this.y + dy); } : (dx: number, dy: number) => Point >dx : number >dy : number return new Point(this.x + dx, this.y + dy); >new Point(this.x + dx, this.y + dy) : Point >Point : typeof Point >this.x + dx : any >this.x : any >this : any >x : any >dx : number >this.y + dy : any >this.y : any >this : any >y : any >dy : number }, mult: function(p) { return p; } >mult : (p: Point) => Point >function(p) { return p; } : (p: Point) => Point >p : Point >p : Point })