函数是JavaScript应用程序的基础。 它帮助你实现抽象层,模拟类,信息隐藏和模块。 在TypeScript里,虽然已经支持类,命名空间和模块,但函数仍然是主要的定义行为的地方。 TypeScript 为 JavaScript 函数添加了额外的功能,让我们可以更容易地使用。
函数类型
从这个系列开篇到现在一直在强调的都是 TS 具有类型校验的特性。TS 中的函数与 JS 中的函数最根本的区别也就是 TS 函数具有类型校验的能力,这个能力表现在参数和返回值上。
function foo(x: number, y: number):number {
return x + y
}
需要注意的是,TS 中的函数在调用时,实参个数以及实参的类型必须跟形参的个数以及类型完全匹配,参数不能多也不能少(在默认情况下),否则会报错。
但是,有些时候我们期望参数是可选的或者某个参数带有默认值的。
在参数的后面加上 ?就可以表示参数的可选参数,可传可不传。
function foo(x: number, y: number,z?:number):number {
return z ? x + y + z : x + y
}
foo(1,2)
foo(1,2,3)
上面的函数中,z 就是一个可选参数。
对于默认值参数,在参数名后直接赋上一个默认值即可,若实参没有传入值,那么就会使用默认值,否则使用实参的值。
function foo(x: number, y: number,z:number = 4):number {
return z ? x + y + z : x + y
}
foo(1,2)//7
foo(1,2,3)//6