新闻详情

新闻详情

首页 / 资讯中心 / 详情

The Concise TypeScript Book 精讲:深入理解 TypeScript 的 void 类型

发布时间:2026/9/26 6:29:53来源:尧图网络
The Concise TypeScript Book 精讲:深入理解 TypeScript 的 void 类型
文档教程【免费下载链接】typescript-bookThe Concise TypeScript Book: A Concise Guide to Effective Development in TypeScript. Free and Open Source.项目地址https://gitcode.com/gh_mirrors/typ/typescript-book点击查看免费下载void是 TypeScript 内置类型体系中最容易被误读的类型之一。它表示一个函数不返回任何值常用于函数返回类型标注但很多人会把它与undefined、null甚至never混为一谈。本文以《The Concise TypeScript Book》的 void 类型章节 为骨架结合该开源仓库中 类型系统探索章节、内置类型原语 与 never 类型章节 的源码级论述系统讲清void的语义、赋值规则、与undefined/never的边界以及在实际代码中的正确用法。读完本文你将能够准确标注无返回值函数、读懂回调函数中的void返回类型并避开void相关的常见类型错误。一、void的核心语义表示没有返回值按原文档的定义void类型用于表示一个函数不返回任何值。这与 JavaScript 中void运算符void 0得到undefined的含义不同TypeScript 中的void是一个独立的类型原语。原文档给出的最小示例const sayHello (): void { console.log(Hello!); };这里sayHello的返回类型被标注为void说明调用方不应依赖它的返回值。即使函数体末尾隐式返回undefined从类型系统角度看它依然属于void。该章节在仓库中隶属于 内置类型原语 所描述的类型体系void: Represents the absence of any type. It is commonly used as the return type of functions that do not return a value.也就是说void描述的是任何类型的缺失这与never永远不会发生的值形成鲜明对比——这两者在 目录 中被排为第 47 与 48 章属于相邻对照的两个主题。二、void的赋值规则与可赋值性边界很多人以为void就是undefined其实二者在可赋值性上存在微妙差异。仓库中的 探索类型系统 一章给出了明确的规则let g: void; let g1: any; g 1; // Invalidvoid 除了 any 之外不接受任何类型的赋值 g g1; // Validany 可以赋值给 void由此可以总结出void的可赋值性边界没有任何具体值可以赋给void变量void变量只能保持undefined状态只有any类型可以赋给void反过来void变量赋值给number等其他类型同样非法。同章节还专门提示了与严格空值检查strictNullChecks的联动当启用strictNullChecks时null和undefined的处理方式类似于void否则它们的行为类似于never。这句话揭示了void、null、undefined、never在同一类型系统下的位置关系也是面试与工程实践中常见的考察点。三、void与undefined、never的边界辨析3.1void与undefined语义角度undefined表示一个值尚未被赋值或尚未被定义void表示没有值这一概念通常只作为函数返回类型出现。可赋值性角度在strictNullChecks开启时二者处理方式相近但严格来说void更空——一个void类型的变量甚至不能接收显式的undefined以外的常规赋值。3.2void与never对照仓库中的 never 类型章节const infiniteLoop (): never { while (true) { // do something } }; const throwError (message: string): never { throw new Error(message); };never表示永远不会有返回值的函数或表达式无限循环、抛异常而void表示函数会正常结束但不返回任何值。二者的关键区别维度voidnever含义没有返回值值永远不会产生函数形态正常返回隐式返回 undefined无限循环 / 抛异常永远走不到返回典型用途声明无返回值函数、回调签名穷尽性检查、不可达分支标注void与never还经常搭配使用。在 never 类型章节 的穷尽性检查示例中一个switch分支函数本身标注为void返回而default分支使用never承接不可达的联合成员type Direction up | down; const move (direction: Direction): void { switch (direction) { case up: // move up break; case down: // move down break; default: const exhaustiveCheck: never direction; throw new Error(Unhandled direction: ${exhaustiveCheck}); } };这是void在实际工程中最常见的搭档场景外层函数声明没有返回值内层用never做编译期的穷尽性校验。四、工程中的高频使用场景4.1 类与接口中的方法签名仓库中的 class.md 大量使用void标注无返回值的实例方法public sayHi(): void { ... } public introduce(): void { ... } abstract makeSound(): void;在接口与抽象类中void作为方法契约强制所有实现类的方法不返回任何有意义的值。4.2 回调函数与函数类型签名void常出现在回调、事件处理器和函数类型定义中例如 typescript-introduction.md 里的动物接口interface Animal { bark: () void; meow: () void; }这里的关键点是返回类型为void的函数类型允许被一个实际返回了值的函数实现。这是 TypeScript 在回调场景下对void的特殊放宽——比如forEach的回调类型是(value: T) void你传入v v.length返回 number依然合法因为调用方承诺忽略返回值。这既保证了 API 的灵活性又避免了误用返回值。4.3 泛型函数与类型操作工具泛型约束场景generics.md 中的const printLen T extends { length: number }(value: T): void {...}用void声明工具函数无返回值条件类型与工具类型场景type-manipulation.md 中type Func (a: string, b: number) void;配合ParametersFunc抽取参数类型ReturnTypeT也能作用于void返回的函数类型得到void。五、最佳实践小结无返回值函数统一标注: void让类型系统明确不要使用返回值提升可读性不要用void声明暂未确定的变量需要未定义/未知语义时请使用undefined、unknown或null区分void与never正常结束不返回值用void永不返回异常/死循环/不可达分支用never善用回调中的void放宽在设计事件回调、迭代器回调等 API 时用(...) void作为参数类型可以接受返回了值但调用方忽略的实现配合strictNullChecks理解空值语义开启严格空值检查后null/undefined与void的处理边界更清晰也更贴近真实工程配置。六、相关章节与延伸阅读void只是 TypeScript 内置类型体系中的一环建议结合以下仓库章节形成完整认知内置类型原语number、string、boolean、any、void、never等原语的完整定义探索类型系统可赋值性规则、类型即集合Sets的视角以及strictNullChecks下的空值语义never 类型与void成对学习掌握穷尽性检查模式类型操作ParametersT、ReturnTypeT等工具类型对void函数类型的处理函数与类类方法、抽象方法中的void返回类型实践。通过将《The Concise TypeScript Book》中零散的void知识点与仓库内多个章节相互印证你可以从认识语法上升到理解设计意图在实际项目中写出更严谨、更易维护的类型代码。赞分享文档教程【免费下载链接】typescript-bookThe Concise TypeScript Book: A Concise Guide to Effective Development in TypeScript. Free and Open Source.项目地址https://gitcode.com/gh_mirrors/typ/typescript-book点击查看免费下载相关推荐The Concise TypeScript Book 德文版精讲TypeScript 枚举Enums全类型深入剖析The Concise TypeScript Book 德文版精讲TypeScript 枚举Enums全类型深入剖析 导读本文以开源仓库 typescr文档教程The Concise TypeScript Book 精读深入解析 TypeScript 的原始类型Primitive TypesThe Concise TypeScript Book 精读深入解析 TypeScript 的原始类型Primitive Types 导读 本文基于开源项文档教程The Concise TypeScript Book 精讲深入理解 never 类型与穷尽性检查实战The Concise TypeScript Book 精讲深入理解 never 类型与穷尽性检查实战 never 是 TypeScript 内置类型中最特殊文档教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Maven零基础安装配置与镜像加速实战指南 2026/9/26 7:17:07

Maven零基础安装配置与镜像加速实战指南

1. 这不是“又一个Maven教程”,而是一份能让你跳过所有坑的实操手记我带过三届校招新人,也帮二十多个转行朋友配过开发环境。每次说到Maven,总有人卡在“明明按教程做了,但mvn -v就是报错”;有人配好了却死活拉不下依赖…

阅读更多 →
微信小程序视频播放审核被拒怎么办?类目不匹配的过审对策 2026/9/26 7:17:07

微信小程序视频播放审核被拒怎么办?类目不匹配的过审对策

做微信小程序开发的,十个里有八个都跟“视频类目”打过架。页面写完了,功能调试也没问题,后台一提交,回你一句“你的小程序涉及视频播放,请补充文娱-视频类目”,当场把人打蒙。更麻烦的是个人主体账号根本选…

阅读更多 →
SiC电源设计实战:从串扰到EMI的关键问题与工程落地 2026/9/26 7:17:07

SiC电源设计实战:从串扰到EMI的关键问题与工程落地

最近后台和微信群里,问SiC电源的人明显多了起来。有人做车规OBC想提前切换方案,有人拿着光伏逆变器的原理图问我能不能直接把IGBT换成SiC MOSFET,还有学生准备电赛电源题时纠结要不要直接上SiC。说实话,作为一个在电源行业摸爬滚打…

阅读更多 →
React Hooks精讲:useEffect执行时机、依赖数组与清理机制全解析 2026/9/26 7:17:07

React Hooks精讲:useEffect执行时机、依赖数组与清理机制全解析

1. useEffect不是"页面加载后执行",理解这一句能少写一半bug先聊个最常见的场景。很多人第一次用useEffect,是照着网上教程写"请求数据":function UserList() {const [list, setList] useState([]);useEffect(() > {…

阅读更多 →
Agent智能体开发实战:从大模型API到任务闭环的完整指南 2026/9/26 7:17:07

Agent智能体开发实战:从大模型API到任务闭环的完整指南

做"九添菜菜"这个项目的时候,我一开始就在琢磨:大模型API已经这么成熟,为什么还要在它外面套一层Agent智能体?这其实也是很多做Agent智能体开发实战的人会面临的第一道坎——不是技术不会,而是搞不清Agent到…

阅读更多 →
富兰克林定律算法CFA详解:从静电库仑力到全局优化与Python实现 2026/9/26 7:17:00

富兰克林定律算法CFA详解:从静电库仑力到全局优化与Python实现

先交代个背景:我最近在整理元启发式优化算法资料时,偶然看到一个挺有意思的命名——“富兰克林定律算法”,英文缩写叫CFA,全称是Franklins Law Algorithm。这个算法本质上是把静电学里的库仑作用力思想搬进最优化问题,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉