04-TS的函数

01-函数

//! 函数重载
//! 函数的名字相同,函数的参数及个数不同
(() => {
  //定义一个函数
  /**
   * *我们有一个add函数,它可以接收2个string类型的参数进行拼接,也可以接收2个number类型的参数进行相加
   */
  // 函数重载声明
  function name(x: string, y: string): string;
  function name(x: number, y: number): number;
  // 函数声明
  function name(x: number | string, y: number | string): number | string {
    if (typeof x === "string" && typeof y === "string") {
      return x + y;
    } else if (typeof x === "number" && typeof y === "number") {
      return x + y;
    }
    return "";
  }
  //函数调用
  console.log(name("诸葛", "孔明"));
  console.log(name(10, 10));
  //? 如果传入的是非法的数据
  //console.log(name("嗷嗷", 10));
})();

复制代码

02-可选的参数和默认的参数

//! 可选参数 函数在声明的时候,内部的参数使用了?进行修饰, 那么这个参数可以传入也可以不传入,可以叫做可选参数
//! 默认参数 函数在声明的时候,内部的参数有自己的默认值,此时这个参数就可以叫做默认参数
(() => {
  //?定义一个函数
  /**
   * * 传入姓氏和名字,可以得到姓名(姓氏+名字=姓名)
   * * 需求:如果不传入任何内容,那么返回默认的姓氏
   * * 需求:如果只传入姓氏,那么返回姓氏
   * * 需求:如果传入姓氏和名字,那么返回的就是姓名
   */
  const getName = function (firstName: string = "令", lastName?: string) {
    //? 判断名字是否传入
    if (lastName) {
      return firstName + "_" + lastName;
    } else {
      return firstName;
    }
  };
  //?函数调用
  //什么也不传
  console.log(getName());
  //只传入姓氏
  console.log(getName("诸葛"));
  //传入姓氏和名字
  console.log(getName("诸葛", "曹操"));
})();

复制代码

03-剩余的参数

//! 剩余参数 rest
/**
 * ! 剩余参数是放在函数声明的时候所有的参数的最后
 */
(() => {
  //? ...args: string[] ----> 剩余的参数,放在了一个字符串的数组中
  function name(str: string, ...args: string[]) {
    console.log("str: ", str); // 拿到了a
    console.log("args: ", args); // 拿到了 b c
  }
  name("a", "b", "c");
})();

复制代码

04-函数重载

//! 函数重载
//! 函数的名字相同,函数的参数及个数不同
(() => {
  //定义一个函数
  /**
   * *我们有一个add函数,它可以接收2个string类型的参数进行拼接,也可以接收2个number类型的参数进行相加
   */
  // 函数重载声明
  function name(x: string, y: string): string;
  function name(x: number, y: number): number;
  // 函数声明
  function name(x: number | string, y: number | string): number | string {
    if (typeof x === "string" && typeof y === "string") {
      return x + y;
    } else if (typeof x === "number" && typeof y === "number") {
      return x + y;
    }
    return "";
  }
  //函数调用
  console.log(name("诸葛", "孔明"));
  console.log(name(10, 10));
  //? 如果传入的是非法的数据
  //console.log(name("嗷嗷", 10));
})();

复制代码
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享