• TypeScript的函数(方法)


    一、函数的定义

       1、声明式

    1. function getInfo(name: string, age: number) : string {
    2.     return `I am ${name} and I am ${age} years old`
    3. }

           ts在传参时都会规定参数的类型,还有它返回值的类型也会在函数执行之前都已经规定好,如果传参的类型和返回值的类型不符合,ts编译会报错。

       2、匿名函数

    1. const getInfo = function(name: string, age: number):string {
    2.     return `I am ${name} and I am ${age} years old`
    3. }

    二、函数中的参数

         1、默认参数(传入值会覆盖默认参数,不传值也行)

    1. function getinfo(name:string,age:number=20):string{
    2.     return `${name}---${age}`
    3. }
    4. console.log(getinfo("张三"));//打印出:张三 20
    5. console.log(getinfo("张三",30));//打印出:张三 30

         2、可选参数(可以传可选的值也可以不用传,但是可选的参数必须放在参数列表的最后

    1. function getinfo1(name:string,age?:number):string{
    2.     if(age){
    3.         return `${name}---${age}`  
    4.     }else{
    5.         return `${name}---年龄保密`
    6.     }
    7. }
    8. console.log(getinfo1("张三"));//打印出:张三 年龄保密
    9. console.log(getinfo1("张三",30));//打印出:张三 30

          3、剩余参数:利用es6的三点运算符(相当于把参数赋值给一个数组,然后用循环遍历这个数组

    1. function sum1(...result:number[]):number{
    2.     var sum=0;
    3.     for(let i=0;i<result.length;i++){
    4.         sum+=result[i];
    5.     }
    6.     return sum;
    7. }
    8. console.log(sum1(1,2,3,4,5));//15
    9. console.log(sum1(1,2,3,4,5,6));//21

        或者(把传进来的第一个参数赋值给a,后面的放进数组

    1. function sum1(a:number,...result:number[]):number{
    2.     var sum=a;
    3.     for(let i=0;i<result.length;i++){
    4.         sum+=result[i];
    5.     }
    6.     return sum;
    7. }
    8. console.log(sum1(1,2,3,4,5));//15
    9. console.log(sum1(1,2,3,4,5,6));//21

    三、函数的返回值

        1、没有返回值的函数

    1. function getInfo(name:string, age:number):void{
    2.     console.log(`hello${name}`)
    3. }

          当函数不需要return返回数据时,这个函数的返回类型就为void(空)

        2、推断类型(ts自动识别类型(按上下文归类))

    1. function add(x: number, y: number) {
    2.     return x + y
    3. }

           ts会自动识别出返回类型为number

    四、函数的调用

           ts的函数调用和普通的函数没有区别,可以在函数名后面加括号调用,也可以用call,apply,bind来调用

           1、call() 和 apply() 是预定义的函数方法。 两个方法可用于调用函数,两个方法的第一个参数必须是对象本身。

    1. function myFunction(a, b) {
    2.     return a * b;
    3. }
    4.  let obj = myFunction.call(obj, 10, 2);     // 返回 20
    5.  console.log(obj)
    1. function myFunction(a, b) {
    2.     return a * b;
    3. }
    4. myArray = [10, 2];
    5. myObject = myFunction.apply(myObject, myArray);  // 返回 20

    两个方法都使用了对象本身作为第一个参数。 两者的区别在于第二个参数: apply传入的是一个参数数组,也就是将多个参数组合成为一个数组传入,而call则作为call的参数传入(从第二个参数开始)。

           2、普通函数调用:函数名后带括号

    五、函数的重载:使用相同名称和不同参数数量或类型实现不同的功能。

           需求:要求一个函数接受不同类型参数时,有不同的操作

          用联合类型

        

    使用重载

    1. function add07(...rest: number[]): number;
    2. function add07(...rest: string[]): string;
    3. function add07(...rest: any): any {
    4.   let first = rest[0];
    5.   if (typeof first === "string") {
    6.     return rest.join("");
    7.   } else if (typeof first === "number") {
    8.     return rest.reduce((pre: number, cur: number) => pre + cur);
    9.   }
    10. }
    11. console.log(add07(1, 2, 3, 4));
    12. console.log(add07("1", "2", "3", "4"));

     

  • 相关阅读:
    【Redis】基于Redis6的数据类型以及相关命令、应用场景整理
    长连接心跳原理与机制&&工程上踩坑与优化
    angular:html2canvas报错提示Unable to find iframe window
    MySQL使用全文索引+ngram全文解析器进行全文检索
    有序Map集合:LinkedHashMap和TreeMap该如何选用
    HTML CSS游戏官网网页模板 大学生游戏介绍网站毕业设计 DW游戏主题网页模板下载 游戏娱乐网页成品代码...
    零基础入门网络安全,收藏这篇不迷茫【2022最新】
    Matlab之机载雷达系统中的空时自适应处理(STAP)技术(附源码)
    物通博联持续参与京东方(BOE)工厂数字化项目
    我准备了2个月,怒刷面试题,4面字节跳动测试岗,顺利拿到 offer
  • 原文地址:https://blog.csdn.net/m0_37911706/article/details/125608511