/*
函数和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");