var f1 = function(a: i32): i32 { return a; }; assert(f1(1) == 1); var f2 = (a: i32): i32 => { return a; }; assert(f2(2) == 2); var f3 = function someName(): void { }; f3(); function makeAdder<T>(): (a: T, b: T) => T { return function theAdder(a: T, b: T): T { return a + b; }; } var i32Adder = makeAdder<i32>(); assert(i32Adder(4, 2) == 6); var f32Adder = makeAdder<f32>(); assert(f32Adder(1.5, 2.5) == 4.0); function makeAdderArrow<T>(): (a: T, b: T) => T { return (a: T, b: T): T => { return a + b; }; } var i8Adder = makeAdderArrow<i8>(); assert(i8Adder(127, 127) == -2); f1 = f2; assert(f1(4) == 4);