耀极客论坛

 找回密码
 立即注册
查看: 3207|回复: 0

TypeScript中的函数

[复制链接]

336

主题

318

帖子

22万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
220553
发表于 2022-5-9 02:38:20 | 显示全部楼层 |阅读模式
  这篇文章主要介绍了TypeScript中的函数,一般JavaScript中的函数定义常用的有使用function关键字声明函数、使用字面量方式声明函数、使用箭头函数声明函数等几种函数,下面我们大家就一起进入文章了解这些函数的具体定义吧,需要的朋友可以参考一下

1.函数定义


1.1JavaScript中的函数

  在学习TypeScript中的函数前我们先来回顾一下JavaScript中的函数定义常用的包含以下几种:
  第一种:使用function关键字声明函数
  1. function add1 (x, y) {
  2.     return x + y
  3. }
复制代码
  第二种:使用字面量方式声明函数
  1. const add2 = function (x, y) {
  2.     return x + y
  3. }
复制代码
  第三种:使用箭头函数声明函数
  1. const add3 = (x, y) => {
  2.     return x + y
  3. }
复制代码
1.2TypeScript中的函数

  TS中的函数声明方式与JS类似,唯一不同的就是固定了参数类型了返回值类型,如果没有返回值其返回值类型必须为void而不是留空。
  接下来用 TS 的方式重新声明以上是三个函数:
  第一种:使用function关键字声明函数:
  1. /*
  2. 语法结构如下
  3. function 函数名(形参1: 类型, 形参2: 类型,...): 返回值类型 {
  4.      函数体
  5. }
  6. */
  7. function add4(x: number, y: number): number {
  8.     return x + y
  9. }
复制代码
  第二种:使用字面量方式声明函数
  1. /*
  2. 语法结构如下
  3. const 函数名 = function (形参1: 类型, 形参2: 类型,...): 返回值类型 {
  4.      函数体
  5. }
  6. */
  7. const add5 = function (x: number, y: number): number {
  8.     return x + y
  9. }
复制代码
  第三种:使用箭头函数声明函数
  1. /*
  2. 语法结构如下
  3. const 函数名 = (形参1: 类型, 形参2: 类型,...): 返回值类型  => {
  4.      函数体
  5. }
  6. */
  7. // 3. 使用箭头函数声明函数
  8. const add6 = (x: number, y: number): number => {
  9.     return x + y
  10. }
复制代码
  以上就是在TS中声明函数的方式。JS中还有一种参数解耦赋值的情况,这种在TS中怎么指定参数类型呢?示例代码如下:
  1. const add7 = ({ x, y }: { x: number; y: number }): number => {
  2.     return x + y
  3. }
复制代码
  在TS中还有一种可读性更高的写法,如下所示:
  1. const add8: (baseValue: number, increment: number) => number = function (
  2.     x: number,
  3.     y: number
  4. ): number {
  5.     return x + y
  6. }
复制代码
  这种方式将函数分为两个部分,=前面是函数的类型的返回值类型,后半部分才是函数定义的地方。
  其实前半部分也就是为了增加代码的可读性,没有太大的实际意义。

2.可选参数和默认参数

  TypeScript 里的每个函数都是必须。这并不代表不能传递null和undefined作为参数,而是是否为每个参数都传递了值,如果不一一对应,则会抛出异常。简单的说就是形参个数与实参个数一致。
  示例代码如下所示:
  1. function add(x: number, y: number): number {
  2.     return x + y
  3. }
  4. let result1 = add(1) //  Expected 2 arguments, but got 1.
  5. let result2 = add(1, 2)
  6. let result3 = add(1, 2, 3) //  Expected 2 arguments, but got 3
复制代码
  在JS中每个参数都是可选的,可传递也可不传递,如果不传递的时候,它将是默认的undefined 。
  在TS中也是可以实现的,我们只需要在参数名后面添加 ?即可实现可选参数 的功能。
  如下代码:
  1. // 实现可选参数功能
  2. // 参数名旁加一个?即可
  3. function add(x: number, y?: number): number {
  4.   return x + y
  5. }
  6. let result1 = add(1)
  7. let result2 = add(1, 2)
  8. // let result3 = add(1, 2, 3) //  Expected 2 arguments, but got 3
复制代码
  如上代码就实现了可选参数
  在TS中实现默认参数与JS实现默认参数是相同的,只需要为其赋值即可。
  示例代码如下所示:
  1. ;(function () {
  2.   function add(x: number, y: number = 2): number {
  3.     return x + y
  4.   }
  5.   let result1 = add(1) // 3
  6.   let result2 = add(1, 2) // 3
  7. })()
复制代码
  当然,如果不为y指定类型就与JS中一样一样了。

3.剩余参数

  所谓的剩余参数就是函数定义时需要传递两个参数,而函数调用时传递了3个参数;此时就多余出一个参数,该参数就是剩余参数。
  在 JS 中我们可以使用arguments来访问多余传递的参数。那在TS中怎么访问剩余参数呢?
  实际上TS中可以将所有的参数存储在一个变量中,该变量实际上一个解耦的一个数组。
  示例代码如下:
  1. function fun(x: number, ...numbers: number[]): void {
  2.     console.log(numbers)
  3. }
  4. fun(1, 2, 3, 4) // [ 2, 3, 4 ]
复制代码
  到此这篇关于TypeScript中的函数的文章就介绍到这了,更多相关TypeScript函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|耀极客论坛 ( 粤ICP备2022052845号-2 )|网站地图

GMT+8, 2022-11-28 19:22 , Processed in 0.092422 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表