第二章 TypeScript 函数详解

在 TypeScript 中,函数是实现特定功能的重要组成部分。

一、函数声明基础语法

使用 `function` 关键字声明函数,

例如:

复制代码
 function sum(a: number, b: number): number { return a + b; }

这里,`function` 是定义函数的关键字,`sum` 是函数名称,`a` 和 `b` 是参数,参数类型为 `number`,函数的返回值类型也为 `number`。

二、参数详解

1. 可选参数 通过在参数名后添加 `?` 来标识可选参数。

例如:

复制代码
function getPersonInfo(name: string, age: number, gender?: string): string { if (gender === undefined) { gender = '未知'; } return `name:${name},age:${age},gender:${gender}`; }

调用时可以不传递可选参数,此时该参数值为 `undefined`。

2. 默认参数 可以在参数列表中为参数指定默认值。

例如:

复制代码
 function fun1(name: string, age: number, gender: string = '未知'): string { return `name:${name},age:${age},gender:${gender}`; } 

三、特殊类型

1. 联合类型 当函数可能处理不同类型的值时,可以使用联合类型。

例如:

复制代码
function numOrString(message: number | string) { console.log(message); }
2. 任意类型 若函数需要处理任意类型的值,可使用 `any` 类型。

例如:

复制代码
 function funAny(message: any) { console.log(message); } 

四、返回值详解 如果函数没有返回值,使用 `void` 作为返回值类型。

例如:

复制代码
function demo(): void { console.log("aaaa"); }

五、函数声明特殊语法

1. 匿名函数 匿名函数适合简单且只使用一次的场景。

例如:

复制代码
 let numTest: number[] = [1, 2, 3]; 
numTest.forEach(function (number) { console.log(number); }); 

匿名函数能根据上下文推断参数类型,参数类型可省略。

2. 箭头函数 进一步简化匿名函数,只保留参数列表和函数体,用 `=>` 连接。

例如:

复制代码
 let num3: number[] = [1, 2, 3, 4, 5]; num3.forEach((num4) => { console.log(num4); }); 

总结

TypeScript 中的函数具有丰富的特性和灵活的用法。通过明确参数类型和返回值类型,可以提高代码的可读性和可维护性。可选参数和默认参数为函数的调用提供了更多的灵活性。联合类型和任意类型允许函数处理不同类型的值。而特殊语法如匿名函数和箭头函数则为开发者提供了简洁高效的编程方式。掌握 TypeScript 函数的这些特性,有助于开发出更加健壮、高效的应用程序。

相关推荐
KaMeidebaby9 分钟前
卡梅德生物技术快报|原核膜蛋白表达优化实操手册,膜蛋白的纯化梯度洗脱完整流程
前端·网络·数据库·人工智能·算法
大家的林语冰9 分钟前
🫡 见证历史,TypeScript 7 重写成功,VS Code 原地起飞,GitHub 第一语言联手 Go 破而后立!
前端·javascript·typescript
wing9820 分钟前
通往全干之路之:被迫成为全栈
前端·后端·程序员
MengMeng_10231 小时前
soc平台告警分析思路及chrome插件
前端·chrome·安全威胁分析
落落落洛克1 小时前
WAIC 2026收官复盘:国产AI打通大模型、智能体、物理机器人全产业闭环
前端
小时代的大玩家1 小时前
HarmonyOS新特性-沉浸光感在叠叠消小游戏中的落地实践
前端·harmonyos
hunterandroid1 小时前
[鸿蒙从零到一] ArkUI 状态管理实战:从 @State 到 @Provide 与 @Consume
前端
Hilaku1 小时前
为什么很多人觉得前端很简单?
前端·javascript·程序员
hunterandroid1 小时前
[鸿蒙从零到一] ArkUI 列表与网格实战:List、Grid 与 LazyForEach
前端
李明卫杭州2 小时前
Vue2 数组响应式为什么总"不更新"?深入源码对比 Vue3 的 Proxy 改造
前端·javascript·vue.js