=== tests/cases/compiler/funcdecl.ts === function simpleFunc() { >simpleFunc : () => string return "this is my simple func"; >"this is my simple func" : string } var simpleFuncVar = simpleFunc; >simpleFuncVar : () => string >simpleFunc : () => string function anotherFuncNoReturn() { >anotherFuncNoReturn : () => void } var anotherFuncNoReturnVar = anotherFuncNoReturn; >anotherFuncNoReturnVar : () => void >anotherFuncNoReturn : () => void function withReturn() : string{ >withReturn : () => string return "Hello"; >"Hello" : string } var withReturnVar = withReturn; >withReturnVar : () => string >withReturn : () => string function withParams(a : string) : string{ >withParams : (a: string) => string >a : string return a; >a : string } var withparamsVar = withParams; >withparamsVar : (a: string) => string >withParams : (a: string) => string function withMultiParams(a : number, b, c: Object) { >withMultiParams : (a: number, b: any, c: Object) => number >a : number >b : any >c : Object >Object : Object return a; >a : number } var withMultiParamsVar = withMultiParams; >withMultiParamsVar : (a: number, b: any, c: Object) => number >withMultiParams : (a: number, b: any, c: Object) => number function withOptionalParams(a?: string) { >withOptionalParams : (a?: string) => void >a : string } var withOptionalParamsVar = withOptionalParams; >withOptionalParamsVar : (a?: string) => void >withOptionalParams : (a?: string) => void function withInitializedParams(a: string, b0, b = 30, c = "string value") { >withInitializedParams : (a: string, b0: any, b?: number, c?: string) => void >a : string >b0 : any >b : number >30 : number >c : string >"string value" : string } var withInitializedParamsVar = withInitializedParams; >withInitializedParamsVar : (a: string, b0: any, b?: number, c?: string) => void >withInitializedParams : (a: string, b0: any, b?: number, c?: string) => void function withOptionalInitializedParams(a: string, c: string = "hello string") { >withOptionalInitializedParams : (a: string, c?: string) => void >a : string >c : string >"hello string" : string } var withOptionalInitializedParamsVar = withOptionalInitializedParams; >withOptionalInitializedParamsVar : (a: string, c?: string) => void >withOptionalInitializedParams : (a: string, c?: string) => void function withRestParams(a: string, ... myRestParameter : number[]) { >withRestParams : (a: string, ...myRestParameter: number[]) => number[] >a : string >myRestParameter : number[] return myRestParameter; >myRestParameter : number[] } var withRestParamsVar = withRestParams; >withRestParamsVar : (a: string, ...myRestParameter: number[]) => number[] >withRestParams : (a: string, ...myRestParameter: number[]) => number[] function overload1(n: number) : string; >overload1 : { (n: number): string; (s: string): string; } >n : number function overload1(s: string) : string; >overload1 : { (n: number): string; (s: string): string; } >s : string function overload1(ns: any) { >overload1 : { (n: number): string; (s: string): string; } >ns : any return ns.toString(); >ns.toString() : any >ns.toString : any >ns : any >toString : any } var withOverloadSignature = overload1; >withOverloadSignature : { (n: number): string; (s: string): string; } >overload1 : { (n: number): string; (s: string): string; } function f(n: () => void) { } >f : (n: () => void) => void >n : () => void module m2 { >m2 : typeof m2 export function foo(n: () => void ) { >foo : (n: () => void) => void >n : () => void } } m2.foo(() => { >m2.foo(() => { var b = 30; return b;}) : void >m2.foo : (n: () => void) => void >m2 : typeof m2 >foo : (n: () => void) => void >() => { var b = 30; return b;} : () => number var b = 30; >b : number >30 : number return b; >b : number }); declare function fooAmbient(n: number): string; >fooAmbient : (n: number) => string >n : number declare function overloadAmbient(n: number): string; >overloadAmbient : { (n: number): string; (s: string): string; } >n : number declare function overloadAmbient(s: string): string; >overloadAmbient : { (n: number): string; (s: string): string; } >s : string var f2 = () => { >f2 : () => string >() => { return "string";} : () => string return "string"; >"string" : string }