1.函数:封装了一些重复使用的代码,在需要的时候直接调用即可。
函数声明,命名函数
函数中的x和y参数的类型都是string类型,小括号后面的:string,代表的是该函数的返回值也是string类型的
function add(x:string,y:string):string{
return x+y;//求和的函数
}
const result1:string=add('111',222);
console.log(result1)
函数表达式,匿名函数
函数中的x和y参数的类型都是number类型,小括号后面的:number,代表的是该函数的返回值也是number类型的
const add2 = function(x:number,y:number):number{
return x +y;
}
console.log(add2(10,20));//30
函数的完整写法:
add3是变量名
(x:number,y:number)=>number 是当前这个函数的类型
const add3:(x:number,y:number)=>number = function(x:number,y:number):number{
return x +y;
}
console.log(add3(10,20));//30
可选参数:函数在声明的时候,内部的参数使用了?进行修饰,那么就表示该参数可以传入也可以不传。
默认参数:函数在声明的时候,内部的参数有自己的默认值,此时这个参数就可以叫默认参数
const getFullName=function (firstName:string-='东方',lastName?:string):string{
//判断名字是否传入了
if(lastName){
return firstName+'_'+lastName
}else{
return firstName
}
}
//函数调用
//什么也不传入
console.log(getFullName())
//只传入姓氏
console.log(getFullName('张'))
//传入姓氏和名字
console.log(getFullName('张','三'))
剩余参数(rest参数)
剩余参数是放在函数声明的时候所有的参数的最后
function showMsg(str:string,str2:string,...args:string[]){
//...agrs:sgring[]是剩余的参数,放在了一个字符串的数字中,agrs里面。
console.log(str)//a
console.log(str2)//b
console.log(agrs)//['a','c','d']
}
showMsg('a','b','a','c','d')
函数重载声明
例如一个需求:一个add函数,它可以接收2个string类型的参数进行拼接,也可以接收2个number类型的参数进行相加,但是只能有这两种情况出现。否则就报红。
function add(x:string,y:string):string
function add(x:number,y:number):number
function add(x:number|string,y:number|string):number|string{
if((typeof x==='string'&&typeof y==='string')||(typeof x==='number'&&typeof y==='number')){
return x+y
}
}
console.log(add(1,2))//3