02、TypeScript 中的函数

// 函数的定义
/*// es5 函数声明
function run() {
  return 'run'
}
// 匿名函数定义
let run2 = function () {
  return 'run2'
}*/

// 1.ts 函数声明,指定返回值类型
function run11(): string {
  return 'run'
}

// 匿名函数,指定返回值类型
let run12 = function (): number {
  return 123;
}

// 2.ts 定义方法传参
function getInfo(name: string, age: number): string {
  return `${name} --- ${age}`
}

// 没有返回值的方法,通过 void 声明
function run22(): void {
  console.log(111);
}

console.log(getInfo('zhangning', 24));

// 3.方法可选参数
// es5 中方法的实参和形参可以不一样,但是 ts 中必须一样,如果不一样就需要配置可选参数
// age? 表示可选参数,可传可不传,可选参数必须配置到参数的最后面
function getInfo1(name: string, age?: number): string {
  if (age) {
    return `${name} --- ${age}`
  } else {
    return `${name} --- 年龄保密`
  }
}

getInfo1('zhangning');// 不传也不会报错

// 4.默认参数(可选参数)
// es5 不可以设置默认参数,es6 和 ts 都可以设置默认参数
function getInfo2(name: string, age: number = 20): string {
  return `${name} --- ${age}`
}

getInfo2('zhangning');

// 5.剩余参数
function sum(a: number, b: number, c: number, d: number, ...rest: Array<number>): number {
  var sum = a + b + c + d;
  for (let i = 0; i < rest.length; i++) {
    sum += rest[i]
  }
  return sum;
}

sum(1, 2, 3, 4, 5, 6, 7)

// 6.函数重载
// java 中方法的重载:重载指的是两个或者两个以上同名函数,但它们的参数不一样,这时就出现函数重载的情况
// typescript 中的重载,通过为同一个函数提供多个函数类型定义来实现多种功能的目的
// ts 为了兼容 es5 以及 es6 重载的写法和 java 中有区别

// es5 中出现同名的方法,会替换
/*
function css(config) {}
function css(config, val) {}
*/

// ts 中的重载
function getI(name: string): string;
function getI(age: number): number;
function getI(str: any): any {
  if (typeof str === 'string') {
    return `姓名:${str}`
  } else {
    return `年龄:${str}`
  }
}

getI('zhangning');// zhangning
getI(24);// 24
// getI(false);// 错误的写法,因为没有找到参数匹配

// ts 中的重载,参数不同
function getI1(name: string): string;
function getI1(name: string, age: number): string;
function getI1(name: string, age?: number): any {
  if (age) {
    return `姓名:${name}----年龄:${age}`
  } else {
    return `年龄:${name}`
  }
}

getI1('zhangning');
getI1('zhangning', 24);
// getI1(24);// 错误的写法,重载的方法中找不到

// 7.箭头函数
原文地址:https://www.cnblogs.com/zhangning187/p/tsfunzn210411.html