/* 函数和javaScript并没有太大差别,只是增加了额外的功能,使函数有 更为强大的功能而且更易用使用 */ //现在支持函数的参数指定类型,在前面的博文中大家应该已经看到 //还可以指定函数的返回值 function fun7(x: number, y: number): number { return x + y; } let myadd = function (x: number, y: number): number { return x + y; }; /*可选参数与默认参数*/ function fun8(x?: number, y: number = 8): void { }; //一个可选参数,一个默认参数 都不传也没有关系 fun8(); /*剩余参数,在之前的代码中也有写到 用.,.来表达剩余的参数,但需要是数组类型 */ function fun9(arg1: string, arg2: string, ...args: string[]) { }; fun9("1", "2", "3", "4", "5"); /*箭头函数/拉姆达表达式 用过的都知道它的酸爽,简单的语法不说.还可以消除JavaScript的this 问题,提起this就是噩梦,到现在也不知道 this到底是谁 */ let fun10 = (x: number, y: number): number => { return x + y; } /** * 函数的重载也是非常有趣,可以看到和C#中的完全不一样 * 前两个方法只是定义方法的签名, 最后一个是对前两个的 * 方法的处理,最后一个不算是方法 只是实现 */ function pickCard(x: string): string function pickCard(x: number): number function pickCard(x): any { if (typeof x == "string") { return "string result"; } if (typeof x == "number") { return 1; } } pickCard(1); pickCard("1");