函数的定义

 // 函数
 const fn = function (name:string,age:number) {
 return name + age
 }
 let a = fn('张三',18)
 console.log(a)
 ​

image-20230105130938943

注意,参数不能多传,也不能少传 必须按照约定的类型来


但是有默认值的除外

 // 函数
 const fn = function (name:string,age:number = 30,address?:string) {
  return name + age
 }
 ​
 let a = fn('张三',18)   //参数不能多传,也不能少传 必须按照约定的类型来
 let b = fn('李四')  //但 定义了默认值的除外

也可以使用 ? 可选运算符

 // 函数
 const fn = function (name:string,age:number = 30,address?:string) {
  return name + age + address
 }
 ​
 let a = fn('张三',18)   //参数不能多传,也不能少传 必须按照约定的类型来
 let b = fn('李四')  //但 定义了默认值的除外
 // 也可以使用 ? 可选运算符      但默认会变成 undefined
 console.log(a)
 console.log(b)
 ​

image-20230105153752329


使用接口约束函数类型

 //使用 interface 约束函数类型
 //同样不能多一个也不能少一个
 interface User {
  name:string,
  age:number,
  address?:string     //使用接口时不会出现 undefined
 }
 ​
 const fn1 = function(user:User) {
  return user
 }
 let c = fn1({
  name:"王五",
  age:20
 })
 console.log(c)

image-20230105154831772

函数重载

重载是方法名字相同,而参数不同,返回值类型可以相同也可以不同。

如果参数类型不同,则操作函数参数类型应设置为 any

参数数量不同 你可以将不同的参数设置为可选

 //函数的重载
 //函数名相同,参数不同,返回值可以相同也可以不同
 function fn2(params:number):void
 function fn2(params:string,params2:number):void
 //上面两个是重载函数 (没有花括号), 下面的是执行函数
 function fn2(params:any,params2?:any):any {
  console.log(params)
  console.log(params2)
 }
 ​
 let aa = fn2(1) //遵循第一套(个函数的)规则
 let bb = fn2("赵六",23) //遵循第二套(个函数的)规则

image-20230105155619853