这是我参与8月更文挑战的第12天,活动详情查看:8月更文挑战
1.函数声明
function student(x:string,y:number):string{
return `我是${x},我今年${y}岁啦`
}
console.log(student('猪小屁',5))
复制代码
我们来看看跟javascript 有什么不一样呢
- 指定了参数的类型(因为有类型检查,所以要遵循),确定了函数的返回值类型
- 参数不可多不可少,只能刚刚好,且和顺序有关。
函数表达式
let student:(x:string,y:number)=>string = function(name:string,age:number):string{
return `我是${name},我今年${age}岁啦`
}
复制代码
- 前后参数名称可以不一致
- 如果函数没有返回值 可以使用void
可选参数及默认参数
function student(y:number,x:string='猪小屁'):string{
return `我是${x},我今年${y}岁啦`
}
console.log(student(5))
复制代码
- 可以看到,默认值的参数识别为可选参数,但不必在必需参数后面。
- 虽说它是可选参数了耶不必放在必需参数后面了,但是一旦放在必需参数前面,就要明确写上undefined或者值,即不能空这。
可选参数
function student(y:number,x:string='猪小屁',sex?:string):string{
return `我是${x},我今年${y}岁啦`
}
console.log(student(9,undefined))
复制代码
- 可选参数要放在必需参数后面
剩余参数
function student(y:number,x:string,...name:string[]):void{
console.log(...name)
}
console.log(student(1,'猪小屁', '猪小美','虎大橘'))
复制代码
- 剩余参数会被当做个数不限的可选参数,可以一个都没有,也可以有任意个。同样要放在必要参数后面。
- 是数组类型,名字是省略号后面的字段名,可以在函数体内使用这个数组。
** 函数重载 **
- java中方法的重载: 重载指的是两个或者两个以上同名函数,但它们的参数不一样,这时会出现函数重载的情况
- ts中的重载:通过为同一个函数提供多个函数类型定义来实现多种功能的目的。
- ts为了兼容es5 es6 重载的写法和java中的有区别。
function getUserInfo(name:string):string;
function getUserInfo(name:number):number;
function getUserInfo(name:any):any{
if (typeof name === 'string') {
return '我叫'+ name;
}else{
return name;
}
}
console.log(getUserInfo('猪小屁')); //=> 我叫猪小屁
console.log(getUserInfo(5)); //=> 我的年龄是5
//console.log(getUserInfo(true));//错误写法
复制代码
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END