TypeScript中的函数

 更新时间:2021年12月09日 11:59:59   作者:一碗周  
这篇文章主要介绍了TypeScript中的函数,一般JavaScript中的函数定义常用的有使用function关键字声明函数、使用字面量方式声明函数、使用箭头函数声明函数等几种函数,下面我们大家就一起进入文章了解这些函数的具体定义吧,需要的朋友可以参考一下

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
}

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

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

2.可选参数和默认参数

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中一样一样了。

3.剩余参数

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

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

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

示例代码如下:

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

到此这篇关于TypeScript中的函数的文章就介绍到这了,更多相关TypeScript函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • js中flexible.js实现淘宝弹性布局方案

    js中flexible.js实现淘宝弹性布局方案

    这篇文章主要为大家详细介绍了js中flexible.js实现淘宝弹性布局方案,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2015-12-12
  • TypeScript 背后的结构化类型系统原理详解

    TypeScript 背后的结构化类型系统原理详解

    这篇文章主要为大家介绍了TypeScript 背后的结构化类型系统原理详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • 引用 js在IE与FF之间的区别详细解析

    引用 js在IE与FF之间的区别详细解析

    这篇文章主要介绍了js在IE与FF之间的区别。需要的朋友可以过来参考下,希望对大家有所帮助
    2013-11-11
  • Javascript 、Vue禁止鼠标右键点击事件实例

    Javascript 、Vue禁止鼠标右键点击事件实例

    这篇文章主要给大家介绍了关于Javascript 、Vue禁止鼠标右键点击事件的相关资料,禁止右键的原理是通过JavaScript阻止浏览器右键事件的默认行为,从而达到禁止右键的效果,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • 如何写JS数组sort的比较函数

    如何写JS数组sort的比较函数

    我们知道,数组的sort方法可以对数组元素进行排序,默认是按ASCII字母表顺序排序。如果要根据其他的顺序排序就需要为sort方法提供一个比较函数作为参数。这里讲的就是如何写这个比较函数。
    2010-07-07
  • 自己写的Javascript计算时间差函数

    自己写的Javascript计算时间差函数

    Javascript计算时间差函数,获得时间差,时间格式为 年-月-日 小时:分钟:秒 或者 年/月/日 小时:分钟:秒。
    2013-10-10
  • js 设置css的定位

    js 设置css的定位

    css的定位设置代码
    2008-12-12
  • JavaScript实现设计模式中的单例模式的一些技巧总结

    JavaScript实现设计模式中的单例模式的一些技巧总结

    单例模式是JavaScript项目中最常用的设计模式之一,下面罗列了JavaScript实现设计模式中的单例模式的一些技巧总结,包括惰性加载与分支技术等,需要的朋友可以参考下.
    2016-05-05
  • 原生js验证简洁注册登录页面

    原生js验证简洁注册登录页面

    这篇文章主要为大家详细介绍了原生js验证简洁美观注册登录页面的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • JavaScript Class类实例讲解

    JavaScript Class类实例讲解

    ES6提供了更接近面向对象(注意:javascript本质上是基于对象的语言)语言的写法,引入了Class(类)这个概念,作为对象的模板,下面这篇文章主要给大家介绍了关于JavaScript ES6中class定义类的相关资料,需要的朋友可以参考下
    2022-11-11

最新评论