JavaScript中的函数参数是非常灵活的,实参和形参的数目可以不必相同。
代码实例如下:[JavaScript] 纯文本查看 复制代码function func(a,b){
// code
}
func(1);
函数声明规定了两个参数,实际调用却传递了一个参数。
TypeScript对于参数的要求则相对严格,代码实例如下:[typescript] 纯文本查看 复制代码function func(webName: string, age: 4){
// code
}
func("蚂蚁部落",4);//代码正确
func("蚂蚁部落",4,"青岛市南区");//代码错误
func(5,4);//代码错误
func("蚂蚁部落");//代码错误
TypeScript函数传参的一个基本规则总结:给一个函数的参数个数必须与函数期望的参数个数一致。
为了应用的灵活性,TypeScript函数增加了可选参数和默认参数,下面分别做一下介绍:
(1).可选参数:[typescript] 纯文本查看 复制代码function func(webName: string, age?: 4){
// code
}
func("蚂蚁部落",4);//代码正确
func("蚂蚁部落",4,"青岛市南区");//代码错误
func(5,4);//代码错误
func("蚂蚁部落");//代码错误
在参数名称后面加一个问号(?)可以规定此参数为可选参数,那么此参数可以省略。
特别说明:可选参数必须位于必需参数后面。
(2).默认参数:
可以为参数提供一个默认值,当没有传递参数值或传递的值是undefined时,就使用默认参数值。
代码实例如下:[typescript] 纯文本查看 复制代码function func(webName: string, age= 4){
// code
}
func("蚂蚁部落")//age参数将使用默认值4
func("蚂蚁部落",5)//age参数默认值不会生效,使用传递的值
func("蚂蚁部落",undefined)//传递undefined时,使用默认参数值
与可选参数不同的是,带默认值的参数不需要放在必须参数的后面。
如果带默认值的参数出现在必须参数前面,用户必须明确的传入 undefined值来获得默认值。
特别说明:
可选参数与末尾的默认参数共享参数类型,代码如下:[typescript] 纯文本查看 复制代码function func(webName: string, age= 4):string{
// code
}
function func(webName: string, age?:number):string{
// code
}
共享同样类型(webName: string, age?: number) => string,默认参数的默认值消失,保留一个可选参数信息。
strictNullChecks:true的影响:
如果在tsconfig.json文件中配置"strictNullChecks":true,那么可选参数会被自动地加上| undefined。
代码实例如下:[typescript] 纯文本查看 复制代码function func(x: number, y?: number) {
return x + (y || 0);
}
func(1, 2);
func(1);
func(1, undefined);
截图如下: