news 2026/3/11 0:22:04

TypeScript 函数

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
TypeScript 函数

TypeScript 函数详解

TypeScript 的函数语法与 JavaScript 基本一致,但增加了强大的类型支持,包括参数类型、返回值类型、可选参数、默认参数、剩余参数、重载等。这些特性让函数更安全、更易维护。

1. 基本函数声明与表达式
// 函数声明(Function Declaration)functionadd(a:number,b:number):number{returna+b;}// 函数表达式(Function Expression)constsubtract:(x:number,y:number)=>number=(x,y)=>x-y;// 箭头函数(Arrow Function)——推荐用于简短函数constmultiply=(a:number,b:number):number=>a*b;

TS 优势

  • 参数和返回值必须指定类型(或通过推断)。
  • 编译时检查类型匹配,避免运行时错误。
add(10,"20");// 编译错误:参数类型不匹配
2. 可选参数与默认参数
// 可选参数(用 ? 表示,必须放在必选参数后面)functiongreet(name:string,greeting?:string):string{return`${greeting??"Hi"}${name}`;}greet("Alice");// "Hi Alice"greet("Bob","Hello");// "Hello Bob"// 默认参数(ES6+ 支持)functionlog(message:string="Info"):void{console.log(message);}log();// "Info"log("Error");// "Error"
3. 剩余参数(Rest Parameters)
functionsum(...numbers:number[]):number{returnnumbers.reduce((total,n)=>total+n,0);}sum(1,2,3,4);// 10sum();// 0

剩余参数类型必须是数组类型。

4. 函数重载(Function Overloading)

TypeScript 支持函数重载:同一个函数名,根据不同参数类型/数量提供不同实现。

functionformat(value:string):string;functionformat(value:number,digits:number):string;functionformat(value:any,digits?:any):string{if(typeofvalue==="string"){returnvalue.toUpperCase();}if(typeofvalue==="number"){returnvalue.toFixed(digits??2);}returnString(value);}format("hello");// "HELLO"format(3.14159,2);// "3.14"

规则

  • 先写多个重载签名(只有类型,没有实现)。
  • 最后写实际实现函数(兼容所有重载)。
5. this 类型处理

箭头函数会捕获外部this,普通函数在 TS 中可显式声明this参数。

interfaceUser{name:string;}functionshowName(this:User){console.log(this.name);}constuser:User={name:"Alice"};showName.call(user);// "Alice"
6. void、never 与函数返回值
// void:函数无返回值(返回 undefined 也算 void)functionwarn():void{console.log("Warning!");}// never:函数永远不会正常返回(抛错或无限循环)functionerror(msg:string):never{thrownewError(msg);}functioninfiniteLoop():never{while(true){}}
7. 函数类型定义

可以单独定义函数类型,然后赋值。

// 类型别名typeBinaryOperation=(a:number,b:number)=>number;constadd:BinaryOperation=(x,y)=>x+y;constdivide:BinaryOperation=(x,y)=>{if(y===0)thrownewError("除零");returnx/y;};
8. 异步函数(async/await)
asyncfunctionfetchData(url:string):Promise<string>{constresponse=awaitfetch(url);if(!response.ok)thrownewError("网络错误");returnawaitresponse.text();}// 使用fetchData("https://api.example.com").then(data=>console.log(data)).catch(err=>console.error(err));

返回类型通常为Promise<T>

9. 最佳实践建议
建议示例说明
始终标注返回值类型: string而非省略(提升可读性)
参数尽量避免any用具体类型或泛型替代
使用箭头函数作为回调避免 this 指向问题
复杂函数优先使用重载提供更好的类型提示
开启noImplicitAny强制显式类型,避免隐式 any
短函数用箭头,长函数用声明可读性更好
小结:函数声明速查表
类型语法示例适用场景
普通函数声明function fn(a: number): string {}复杂逻辑
箭头函数const fn = (a: number) => string简短、回调
可选/默认参数function fn(name: string, age?: number = 18)灵活调用
剩余参数function fn(...args: string[])不定参数
函数重载多签名 + 一个实现多态行为
async 函数async function fn(): Promise<T>异步操作

如果您想深入某个部分(如泛型函数函数装饰器高阶函数、或 React 中的函数组件),或者需要完整示例代码,请告诉我!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/10 16:35:36

Excalidraw访客模式使用注意事项

Excalidraw访客模式使用注意事项 在远程会议频繁、跨组织协作日益普遍的今天&#xff0c;一个简单却高效的可视化工具往往能决定一场头脑风暴的成败。设想这样一个场景&#xff1a;你正在主持一次产品架构评审会&#xff0c;参会者包括外部顾问、客户代表和内部开发人员。传统流…

作者头像 李华
网站建设 2026/3/2 18:42:06

【AI工程化新突破】:Open-AutoGLM可视化配置的7个高阶用法

第一章&#xff1a;Open-AutoGLM可视化配置工具的核心价值Open-AutoGLM作为面向大模型应用开发的可视化配置工具&#xff0c;显著降低了非专业开发者在构建智能对话系统时的技术门槛。通过图形化界面与模块化设计&#xff0c;用户无需编写复杂代码即可完成模型调用、提示工程优…

作者头像 李华
网站建设 2026/2/22 7:18:54

Open-AutoGLM高效开发实战(拖拽式流程设计全曝光)

第一章&#xff1a;Open-AutoGLM高效开发概览Open-AutoGLM 是一个面向生成式语言模型自动化开发的开源框架&#xff0c;旨在简化从模型训练、微调到部署的全流程。其核心设计理念是通过声明式配置与模块化组件结合&#xff0c;提升开发效率并降低使用门槛。核心特性 支持多后端…

作者头像 李华
网站建设 2026/3/3 15:03:50

Excalidraw项目空间组织结构设计

Excalidraw项目空间组织结构设计 在远程协作成为常态的今天&#xff0c;团队沟通中最缺失的是什么&#xff1f;不是视频会议里的面孔&#xff0c;也不是即时消息中的文字&#xff0c;而是那块可以随手涂画、边说边改的白板。真实会议室里&#xff0c;一张草图往往胜过千言万语&…

作者头像 李华
网站建设 2026/3/7 3:40:51

错过后悔一年:Open-AutoGLM即将闭源,现在是最后的免费使用窗口期!

第一章&#xff1a;Open-AutoGLM 技术支持效率提升Open-AutoGLM 是一款基于开源大语言模型&#xff08;LLM&#xff09;的自动化代码生成与技术支持平台&#xff0c;专为开发者和运维团队设计&#xff0c;旨在显著提升技术响应速度与问题解决效率。通过深度集成自然语言理解能力…

作者头像 李华
网站建设 2026/3/9 20:34:25

6、电脑文件操作与媒体播放全攻略

电脑文件操作与媒体播放全攻略 在日常使用电脑的过程中,我们经常需要对各种文件进行操作,同时也会涉及到媒体文件的播放等功能。下面将为大家详细介绍电脑文件操作以及媒体播放的相关知识和操作步骤。 1. 刻录音乐文件到 CD 如果你想将电脑中的音乐文件刻录到 CD 上,可按…

作者头像 李华