TypeScript(六)函数

本文介绍了TypeScript中函数的高级特性,包括可选参数的定义、参数默认值的设置、剩余参数的使用、类型的自动推断以及函数重载的概念和实现方式。通过示例展示了如何在TS中有效地定义和使用这些功能。
摘要由CSDN通过智能技术生成

目录

前言

可选参数

参数默认值

剩余参数

类型推断

函数重载

结尾

参考文章


前言

本文收录于TypeScript知识总结系列文章,欢迎指正! 

在前面的文章中,我使用对象类型以及接口分别定义了函数类型,浅谈了函数的定义及基本使用。本文将分享函数的进阶用法

可选参数

函数参数可以被标记为可选的,这意味着在调用函数时可以省略这个参数。要使参数成为可选参数,写法与接口的可选属性一样,在参数名后面加上一个问号?

function foo(params?: string): void {
    console.log(params)
}

需要注意的是,必选参数不能位于可选参数后,下面代码会提示错误

function foo(params?: string, params2): void {
    console.log(params, params2)
}

正确写法

function foo(params2, params?: string): void {
    console.log(params, params2)
}

参数默认值

参数默认值是在函数声明时可以为函数参数指定一个默认值,当传入的实参为空时使用该值

function foo(params?: string, params2: string = "hello"): void {
    console.log(params, params2)
}

此时函数中被赋予参数默认值的参数也建议放在最后(一般接入sonar会提示)

function foo(params2: string = "hello", params3: string): void {// 不推荐
    console.log(params2, params3)
}
function foo2(params3: string, params2: string = "hello"): void {// 建议这么写
    console.log(params2, params3)
}

剩余参数

剩余参数实际是JS中的语法,在ES6之前,使用function关键字声明函数一般使用arguments获取参数类数组,在ES6的结构赋值和箭头函数出现后,一般使用 ...args 获取函数剩余参数或所有参数

function foo(...args): void {
    console.log(...args, ...arguments)// a b c a b c
}
foo("a", "b", "c")

类型推断

TypeScript中函数可以自动推断返回值类型,比如

function foo(num: number, num2: number) {
    return num + num2
}

上述代码会根据想加逻辑将返回值推断为number

function foo(num: number, num2: number): number

函数重载

函数重载是TS中十分重要的特性,它允许我们针对同一个函数名定义多种参数及返回值类型;在调用时会根据传入的参数类型和返回值类型来自动选择正确的函数;函数重载的写法与接口和对象之间的关系有点相似:定义抽象的函数声明,使用函数将其实现。

function foo(num: number, num2: number): number
function foo(str: string): string
function foo(str: number | string, num2?: number) {
    return typeof str === "string" ? str : str + num2
}

上述例子是一个简单的函数重载,我定义了两个函数待实现,如果第一个参数类型是string则直接返回,否则返回参数之和

结尾

这篇文章针对TS中的函数进行了进阶的介绍,除了在之前文章中提到的函数定义及用法外,还介绍了函数参数的操作,返回值推断,函数重载

感谢你的阅读,希望文章对你有所帮助,有任何问题还望在评论区留言。

参考文章

函数(function) - TypeScript 中文手册

函数的类型 · TypeScript 入门教程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿宇的编程之旅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值