typescript函数声明、函数传参、函数重载

//一:函数声明
//函数的声明
function fun1(): string {
  return '123'
}
//匿名函数声明
var fun2 = function(): number {
  return 1
}

fun2() //调用函数

//二:ts中定义方法传参
function fun3(a: number, b: number): number {
  return a + b
}
console.log(fun3(1, 2))

//不需要返回值时可以在方法后加上void
function fun4(a: number, b: number): void {
  console.log(a + b)
}

//方法可选参数
//es5里方法的实参和形参可以不一样,TS中必须一样,如果不一样需要配置可选参数
function fun5(a: string, b?: number): string {
  //?表示该参数可以不传,可选参数必须是最后一个参数
  return b ? '字符串' + a + b : '字符串' + a
}

console.log(fun5('ce', 1))

//默认可选参数
function fun6(name: string, age: number = 22): string {
  return age ? name + age : name + '不知道年龄'
}
console.log(fun6('kk')) //kk不知道年龄
console.log(fun6('kk', 18)) //kk18

//剩余参数
//扩展运算符   接收新参数传来的值
function sum(...arr: number[]): number {
  var sum = 0
  for (var i = 0; i < arr.length; i++) {
    sum += arr[i]
  }
  return sum
}
console.log(sum(12, 34, 56))

function sum2(a: number, ...arr: number[]): number {
  //a是传参的第一个参数
  var sum = a
  for (var i = 0; i < arr.length; i++) {
    sum += arr[i]
  }
  return sum
}
console.log(sum2(12, 34, 56))

//函数的重载
//通过为同一个参数提供多个参数类型定义来实现多种功能的目的
//es5中如果出现同名方法,那么下面的方法会替换上面的方法

function fun7(a: number): number
function fun7(a: number, b: number): number
function fun7(a: any, b?: any): any {
  return b ? a + b : b
}

猜你喜欢

转载自blog.csdn.net/weixin_41587194/article/details/103674897