这是我参与「第四届青训营 」笔记创作活动的第3天
函数是对某些过程的抽象,可以实现某些信息的隐藏并对外提供接口。尽管在TypeScript里已经支持类、命名空间等特性,但函数仍然是主要的定义行为的方式。
TS继承了JS原有的函数特性,并在此基础上添加了一些额外的功能,以求实现更好的易用性。
函数
TS继承了JS原有的特性,和JS一样,TS可以创建命名函数和匿名函数。
1.命名函数
如果你创建的函数需要在程序中调用多次,你可以使用命名函数,你可以使用函数名()的形式调用它。
你可以声明一个函数使用以下形式:
function 函数名(参数1:参数类型,参数2:参数类型,......){ 语句; 语句; 语句; ... }
2.匿名函数
如果我们只使用一次函数,我们可以使用匿名函数的方式声明它,下面是一个匿名函数的例子:
let myAdd = function(x, y) { return x + y; };
参数与传参
在TS中,调用函数时参数个数必须与函数声明里的参数个数一致。这与JS中并不相同,在JS中,每个参数都是可选的,如果我们没有传递该参数,在函数体内,参数值就是undefined。
为实现可选参数的功能,我们可以在参数名旁使用?,比如,我们想让last name是可选的:
function buildName(firstName: string, lastName?: string) {
if (lastName)
return firstName + " " + lastName;
else
return firstName;
}
let result1 = buildName("Bob"); // works correctly now
let result2 = buildName("Bob", "Adams", "Sr."); // error, too many parameters
let result3 = buildName("Bob", "Adams"); // ah, just right
在TypeScript里,我们也可以为参数提供一个默认值。当用户没有传递这个参数或传递的值是undefined时。 它们叫做有默认初始化值的参数。
在所有必须参数后面的带默认初始化的参数都是可选的,与可选参数一样,在调用函数的时候可以省略。 也就是说可选参数与末尾的默认参数共享参数类型。