1、函数的定义及重载
//函数重载(不建议)
//仅仅声明一下函数,但是最终要提供一个函数实现
function add(a:number,b:number):number
function add(a:number,b:number,...e:number[]):number
function add(
a:number,
b:number,
c?:number, //c为可选参数
d:number=0, //参数d的默认值为0
...e:number[] //e可变参数列表且类型为number
):number {
// if(c){
// return a+b+c
// }else {
// return a+b
// }
//简要写法
// return c ? a+b+c:a+b
// return a+b+(c||0)+d
let sum = a+b+(c||0)+d
for(let i = 0; i < e.length; i++){
sum +=e[i]
}
return sum
}
console.log(add(2,3))//5
console.log(add(2,3,4))//9
console.log(add(2,3,4,5))//14
console.log(add(1,2,3,4,5,6,7,8,9,10))//55
//传入的参数为number数组
const numbers = [5,6,7,8,9,10]
// 利用 ... 语法传入可变参数列表
console.log(add(1,2,3,4,...numbers))//55
2、对象类型作为参数
(1)解决参数数量过多的问题
(2)解决 bool参数的问题
(3)解决回调函数类型的问题
//对象类型作为参数
function sendRequest(params:{
url:string,
method:'GET'|'POST'|'PUT',
header:object,
data?:string,
requireAuth:boolean,
retry:boolean,
retryTimeout?:number,
}){}
sendRequest({
url:'https://www.baidu.com',
method:'GET',
header:{
contentType:'application/json',
},
data:'{}',
requireAuth:false,
retry:true,
retryTimeout:30000,
})