温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何分析TypeScript中的函数

发布时间:2021-12-09 15:04:14 来源:亿速云 阅读:146 作者:柒染 栏目:开发技术

如何分析TypeScript中的函数,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

    1.函数定义

    1.1JavaScript中的函数

    在学习TypeScript中的函数前我们先来回顾一下JavaScript中的函数定义常用的包含以下几种:

    第一种:使用function关键字声明函数

    function add1 (x, y) {
        return x + y
    }

    第二种:使用字面量方式声明函数

    const add2 = function (x, y) {
        return x + y
    }

    第三种:使用箭头函数声明函数

    const add3 = (x, y) => {
        return x + y
    }

    1.2TypeScript中的函数

    TS中的函数声明方式与JS类似,唯一不同的就是固定了参数类型了返回值类型,如果没有返回值其返回值类型必须为void而不是留空。

    接下来用 TS 的方式重新声明以上是三个函数:

    第一种:使用function关键字声明函数:

    /*
     语法结构如下
     function 函数名(形参1: 类型, 形参2: 类型,...): 返回值类型 {
         函数体
     }
     */
    function add4(x: number, y: number): number {
        return x + y
    }

    第二种:使用字面量方式声明函数

    /*
     语法结构如下
     const 函数名 = function (形参1: 类型, 形参2: 类型,...): 返回值类型 {
         函数体
     }
     */
    const add5 = function (x: number, y: number): number {
        return x + y
    }

    第三种:使用箭头函数声明函数

    /*
     语法结构如下
     const 函数名 = (形参1: 类型, 形参2: 类型,...): 返回值类型  => {
         函数体
     }
     */
    // 3. 使用箭头函数声明函数
    const add6 = (x: number, y: number): number => {
        return x + y
    }

    以上就是在TS中声明函数的方式。JS中还有一种参数解耦赋值的情况,这种在TS中怎么指定参数类型呢?示例代码如下:

    const add7 = ({ x, y }: { x: number; y: number }): number => {
        return x + y
    }

    在TS中还有一种可读性更高的写法,如下所示:

    const add8: (baseValue: number, increment: number) => number = function (
        x: number,
        y: number
    ): number {
        return x + y
    }

    这种方式将函数分为两个部分,=前面是函数的类型的返回值类型,后半部分才是函数定义的地方。

    其实前半部分也就是为了增加代码的可读性,没有太大的实际意义。

    3.可选参数和默认参数

    TypeScript 里的每个函数都是必须。这并不代表不能传递null和undefined作为参数,而是是否为每个参数都传递了值,如果不一一对应,则会抛出异常。简单的说就是形参个数与实参个数一致。

    示例代码如下所示:

    function add(x: number, y: number): number {
        return x + y
    }
    let result1 = add(1) //  Expected 2 arguments, but got 1.
    let result2 = add(1, 2)
    let result3 = add(1, 2, 3) //  Expected 2 arguments, but got 3

    在JS中每个参数都是可选的,可传递也可不传递,如果不传递的时候,它将是默认的undefined

    在TS中也是可以实现的,我们只需要在参数名后面添加 ?即可实现可选参数 的功能。

    如下代码:

    // 实现可选参数功能
    // 参数名旁加一个?即可
    function add(x: number, y?: number): number {
      return x + y
    }
    let result1 = add(1)
    let result2 = add(1, 2)
    // let result3 = add(1, 2, 3) //  Expected 2 arguments, but got 3

    如上代码就实现了可选参数

    在TS中实现默认参数与JS实现默认参数是相同的,只需要为其赋值即可。

    示例代码如下所示:

    ;(function () {
      function add(x: number, y: number = 2): number {
        return x + y
      }
      let result1 = add(1) // 3
      let result2 = add(1, 2) // 3
    })()

    当然,如果不为y指定类型就与JS中一样一样了。

    4.剩余参数

    所谓的剩余参数就是函数定义时需要传递两个参数,而函数调用时传递了3个参数;此时就多余出一个参数,该参数就是剩余参数。

    在 JS 中我们可以使用arguments来访问多余传递的参数。那在TS中怎么访问剩余参数呢?

    实际上TS中可以将所有的参数存储在一个变量中,该变量实际上一个解耦的一个数组。

    示例代码如下:

    function fun(x: number, ...numbers: number[]): void {
        console.log(numbers)
    }
    fun(1, 2, 3, 4) // [ 2, 3, 4 ]

    看完上述内容,你们掌握如何分析TypeScript中的函数的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    AI