news 2026/4/23 10:18:34

Typescript - void 类型(详细入门教程)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Typescript - void 类型(详细入门教程)

前言

由于 any / unknown 类型几乎 “相似” ,所以可以直接一起学习。

在 Typescript 中,当我们不确定一个类型是什么类型的,可以选择给其声明为 any 或者 unkown。

本文会介绍这两种类型的介绍及其示例用法,最后谈一下二者的区别。

any 类型

在 TypeScript 中,任何类型都可以被归为 any 类型,因为它可以被赋予任何值。

这让 any 类型成为了类型系统的顶级类型(也被称作全局超级类型),如下代码所示:

letnotSure:any=666;notSure="王佳斌";notSure=false;

TypeScript 允许我们对 any 类型的值执行任何操作,而无需事先执行任何形式的检查,如下代码所示:

letvalue:any;value.foo.bar;// OKvalue.trim();// OKvalue();// OKnewvalue();// OKvalue[0][1];// OK

在许多场景下,这太宽松了。使用 any 类型,可以很容易地编写类型正确但在运行时有问题的代码。

如果您使用 any 类型,就无法使用 TypeScript 提供的大量的保护机制。

unknown 类型

为了解决 any 带来的问题,TypeScript 3.0 引入了 unknown 类型。

就像所有类型都可以赋值给 any,所有类型也都可以赋值给 unknown。

这使得 unknown 成为 TypeScript 类型系统的另一种顶级类型(另一种是前面的 any),如下代码所示:

letvalue:unknown;value=true;// OKvalue=42;// OKvalue="Hello World";// OKvalue=[];// OKvalue={};// OKvalue=Math.random;// OKvalue=null;// OKvalue=undefined;// OKvalue=newTypeError();// OKvalue=Symbol("type");// OK

对 value 变量的所有赋值都被认为是类型正确的。

但是,当我们尝试将类型为 unknown 的值赋值给其他类型的变量时会发生什么?

letvalue:unknown;letvalue1:unknown=value;// OKletvalue2:any=value;// OKletvalue3:boolean=value;// Errorletvalue4:number=value;// Errorletvalue5:string=value;// Errorletvalue6:object=value;// Errorletvalue7:any[]=value;// Errorletvalue8:Function=value;// Error

unknown 类型只能被赋值给 any 类型和 unknown 类型本身。直观地说,这是有道理的:只有能够保存任意类型值的容器才能保存 unknown 类型的值。毕竟我们不知道变量 value 中存储了什么类型的值。

现在让我们看看当我们尝试对类型为 unknown 的值执行操作时会发生什么。以下是我们在之前 any 看过的相同操作:

letvalue:unknown;value.foo.bar;// Errorvalue.trim();// Errorvalue();// Errornewvalue();// Errorvalue[0][1];// Error

将 value 变量类型设置为 unknown 后,这些操作都不再被认为是类型正确的。通过将 any 类型改变为 unknown 类型,我们已将允许所有更改的默认设置,更改为禁止任何更改。

二者区别

其实很明显,可以用以下表格表示。

相同点不同点
都可以赋予任意类型的值unknown 类型的值不能直接赋值给其他变量
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/22 3:36:36

计算机毕业设计项目源码/Flask+vue的博客系统设计与实现附开题报告,毕业论文,毕设代码

博主介绍: CSDN毕设辅导第一人、靠谱第一人、csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客优秀创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围:…

作者头像 李华
网站建设 2026/4/22 10:36:58

Thinkphp和Laravel学生宿舍分配报修管理系统_o4dvi

目录 Thinkphp与Laravel框架对比宿舍分配功能设计报修管理模块实现系统安全与权限控制性能优化建议扩展性与维护性 项目开发技术介绍PHP核心代码部分展示系统结论源码获取/同行可拿货,招校园代理 Thinkphp与Laravel框架对比 Thinkphp作为国内流行的PHP框架,以轻量级…

作者头像 李华
网站建设 2026/4/23 23:06:45

Thinkphp和Laravel小程序“共享书角”图书借还管理系统

目录 技术框架选择核心功能模块数据库设计接口与安全扩展性优化部署与维护 项目开发技术介绍PHP核心代码部分展示系统结论源码获取/同行可拿货,招校园代理 技术框架选择 ThinkPHP和Laravel均为流行的PHP框架,适用于开发“共享书角”小程序后端管理系统。ThinkPHP以…

作者头像 李华
网站建设 2026/4/20 15:18:42

【毕业设计】基于springboot个性化大学生线上聊天交友系统的设计与实(源码+文档+远程调试,全bao定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/4/18 6:32:32

php Token 主流实现方案详解

Token 机制广泛应用于身份验证、防止 CSRF 攻击、接口鉴权等场景。在 PHP 中,主流实现方案均围绕生成唯一标识 存储验证 有效期控制三大核心思路展开。本文梳理了 4 种主流实现方式,便于快速选型和实践。方案 1:基于 Session 的 Token 实现…

作者头像 李华