函数简介:函数是JS应用程序的基础。 它帮助你实现抽象层,模拟类,信息隐藏和模块。 在TS里,虽然已经支持类,命名空间和模块,但函数仍然是主要的定义 行为的地方。 TS为JS函数添加了额外的功能,让我们可以更容易地使用。
函数分类:和JS一样,TS函数可以创建命名函数和匿名函数;语法:声明关键字,function 。
简单回顾,JS中函数的定义:
上述函数定义在TS中怎么实现呢,其实一样的,在TS中添加了类型定义(TS本质是JS,上述代码在TS中也是完全可以的):
function 在JS中也属于数据类型,TS中同样,再次将上述代码在TS中实现完整形式:
在TS中完整定义函数类型,let 声明变量 add3(委托和 C#中委托类似) ,通过符号"=>"标识函数返回类型,同样add3会根据后面的值推断类型,需要接收一个函数(此处匿名函数)类型。
关于推断类型,可将上述代码再次简化,实例如下:
当符号"="左边声明变量add4时,指明了参数数据类型和函数返回值类型,而符号"="右边的函数类型没有指明,TS编译器会自动识别出类型。
注:TS中完整函数定义,包含两部分:参数类型和返回值类型。当写出完整函数类型的时候,这两部分都是需要的。当函数无返回值时,也必须指定返回值类型为 void
而不能留空。实例代码如下:
添加默认值,在声明函数的形参中赋值:
//添加默认值 let sayHi2 = function (n:string ="hello") { return n+",欢迎来到TypeScript的世界!"; } alert(sayHi2()); //使用默认值hello alert(sayHi2("张三")); //为形参n赋值张三
可选参数,使用符号"?:"标识:
//添加可选参数(带默认值) let sayHi3: (name?: string) => string = function (n="hello") { return n+",欢迎来到TypeScript的世界!"; } alert(sayHi3()); //行参name可选 alert(sayHi3("李四"));//为形参name赋值李四
可变参数组,使用符号"...变量名:Array<数据类型>":
或者使用符号"...变量名:数组":
function buildName(firstName: string, ...restOfName: string[]) { return firstName + " " + restOfName.join(" "); } //调用 let employeeName = buildName("Joseph", "Samuel", "Lucas", "MacKinzie");
总结:
1.方法是JS中的一个特殊的对象;
2.方法分为命名方法和匿名方法;
3.方法属于数据类型;
4.方法参数(形参)可以定义默认值;
5.方法参数(行参)可以使用符号"?:"去定义可选参数或可选参数组;
6.方法参数(形参)可以使用符号"..."去定义可变参数组;