TypeScript 从入门到进阶之基础篇(五) 枚举类型篇

在这里插入图片描述

系列文章目录

TypeScript 从入门到进阶系列

  1. TypeScript 从入门到进阶之基础篇(一) ts基础类型篇
  2. TypeScript 从入门到进阶之基础篇(二) ts进阶类型篇
  3. TypeScript 从入门到进阶之基础篇(三) 元组类型篇
  4. TypeScript 从入门到进阶之基础篇(四) symbol类型篇
    持续更新中…

文章目录

  • 系列文章目录
  • TypeScript 从入门到进阶系列
  • 前言
  • 一、枚举的定义
    • 1、数字类型枚举
    • 2、字符串枚举
    • 3、布尔类型枚举
    • 4、异构枚举
    • 5、接口枚举
    • 6、const枚举
  • 二、枚举的使用
    • 1、使用枚举
    • 2、指定枚举成员的值
    • 3、使用枚举作为类型
  • 总结


前言

前面我们了解了基础类型、引用类型、元组类型、symbol类型的使用,本章我们来了解TypeScript中如何使用枚举类型。在TypeScript中,枚举(Enumeration)类型是一种用于定义命名常量集合的数据类型。枚举类型是将相关的常量值分配一个有意义的名字,在代码中使用这些名字来表示某种状态或选项。它可以使代码更具可读性和可维护性。在TypeScript中使用枚举 是通过 enum 关键字来进行定义的

一、枚举的定义

1、数字类型枚举

在TypeScript中 我们如果要定义一个从0开始的数据枚举 如下面代码。当我们赋值是 枚举的值就是从0开始

下面 我们定义了一个数字枚举
为什么是数字枚举呢
因为如果我们枚举里面的内容不指定默认的值
那么将会默认赋值 从0开始
Zero 0 One 1 Two 2

//下面 我们定义了一个数字枚举
//为什么是数字枚举呢
//因为如果我们枚举里面的内容不指定默认的值
//那么将会默认赋值 从0开始
// Zero 0  One 1   Two 2
enum  NumerEnum{Zero,One,Two,
}

当然 我们也可以指定默认值
例如当我们个枚举里面的Zero 指定了默认值1之后,其他成员的值会自动递增
结果为:Zero 1 One 2 Two 3

enum  NumerEnum{Zero = 1,One,Two,
}

而且我们不止可以在第一项个默认值 还可以在其他项给默认值,给了默认值之后的其他成员值会自动递增
例如下面例子的结果:
Zero 0 One 3 Two 4

enum  NumerEnum{Zero,One = 3,Two,
}

2、字符串枚举

枚举值 除了是数字 还可以是字符串,例如下面的例子定义了方向的枚举,注意 字符串的枚举是没有自增长的功能的。

enum Direction {Up = 'up',Down = 'down',Left = 'left',Right = 'right',
}

3、布尔类型枚举

布尔类型枚举,顾名思义就是定义枚举类型值为布尔的 定义方法如下

enum BooleanEnum {TRUE = true,FALSE = false
}

4、异构枚举

上面我们了解了数字枚举和字符串枚举,那么是不是在我们实际项目中 也有可能会遇到一个枚举里面需要字符串、数字、布尔类型 同时存在的

enum MixedEnum {A = 1,B = "b",C = "c",D = true
}

5、接口枚举

在实际的项目中 我们可能在接口的定义中 某个属性会使用到枚举。例如我们接口中有个方向属性 它可能为枚举中的任意值,如下代码定义

//定义方向枚举
enum Direction {Up = 'up',Down = 'down',Left = 'left',Right = 'right',
}//定义接口
interface MyInterface {a:1direction : Direction //方向的定义
}

6、const枚举

在 TypeScript 中,const 枚举和普通枚举有以下几个区别:编译结果:普通枚举在编译后会生成一个真实的对象,而 const 枚举在编译后会直接将枚举的值内联到使用处,不会生成真实的对象。使用方式:普通枚举可以通过枚举成员的名称进行访问,而 const 枚举只能通过值进行访问。只读性质:const 枚举成员是只读的,不允许修改其值,而普通枚举成员是可变的。枚举语句:普通枚举可以包含成员的初始化表达式,而 const 枚举不允许包含任何初始化表达式。由于 const 枚举的编译结果会将枚举的值内联到使用处,因此适用于编译后不需要真实对象的场景,可以减少编译结果的体积。而普通枚举则适用于需要在运行时访问枚举成员以及进行修改的场景。

二、枚举的使用

1、使用枚举

使用枚举时,可以通过枚举名和成员名来获取对应的枚举值。

enum Colors {Red,Green,Blue,
}let color: Colors = Colors.Red;
console.log(color);  // 输出: 0let colorName: string = Colors[1];
console.log(colorName);  // 输出: Green

2、指定枚举成员的值

可以通过手动指定枚举成员的值来覆盖默认的自增值

enum Colors {Red = 1,Green = 2,Blue = 4,
}let color: Colors = Colors.Green;
console.log(color);  // 输出: 2

3、使用枚举作为类型

枚举除了可以用于定义常量,还可以用作类型注解

enum Colors {Red,Green,Blue,
}function getColor(color: Colors): string {switch(color) {case Colors.Red:return '红色';case Colors.Green:return '绿色';case Colors.Blue:return '蓝色';default:return '未知颜色';}
}let color: Colors = Colors.Blue;
console.log(getColor(color));  // 输出: 蓝色

总结

枚举可以简化代码中对常量的使用,提高代码的可读性和可维护性。同时,枚举也可以用作类型注解,增强代码的类型安全性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/606031.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【性能测试入门】:压力测试概念!

压力测试可以验证软件应用程序的稳定性和可靠性。压力测试的目标是评估软件在极端负载条件下的鲁棒性和错误处理能力,并确保软件在紧急情况下不会崩溃。它甚至可以进行超出软件正常工作条件的测试,并评估软件在极端条件下的工作方式。 在软件工程中&…

欠拟合与过拟合

在模型训练中,我们总是希望最终的模型在训练集上有很好的拟合即训练误差小,同时在测试集上也要有较好的拟合效果即泛化误差小,但往往不尽人意。 总之,模型的训练是一个不断调整和优化的过程,我们需要根据实际情况选择合…

【EI会议征稿通知】第三届城市规划与区域经济国际学术会议(UPRE 2024)

第三届城市规划与区域经济国际学术会议(UPRE 2024) 2024 3rd International Conference on Urban Planning and Regional Economy 第三届城市规划与区域经济国际学术会议(UPRE 2024)于2024年4月19-21日在泰国曼谷举行。会议旨在…

Studio 3T客户端连接Mongodb数据库服务

这里需要注意 一定要先开Studio 3T 到 创建连接时才开Mongodb服务 不然 Studio 3T 会找不到Mongodb服务 不知道这是不是 Studio 3T官方问题 期待解决吧 我们打开 Studio 3T 然后点击 Create a new connection 开始创建连接 新弹出的窗口中选择 Manually configure my connec…

实验4.4 动态路由OSPF协议的配置

实验4.4 动态路由OSPF协议的配置 一、任务描述二、任务分析三、具体要求四、实验拓扑五、任务实施1.配置交换机和路由器的接口的IP地址等参数。2.配置动态路由OSPF协议,实现全网互通。 六、任务验收七、任务小结八、知识链接1.OSPF协议概念2.…

MessageBox打通数字通信:深度解析HubSpot与微信群的无缝对接

在当今数字化时代,企业追求更高效的客户互动方式。HubSpot作为综合性的市场营销、销售和服务平台,其与微信群的无缝对接成为企业数字化沟通的重要一环。今天运营坛将深度解析HubSpot如何精准对接微信群,并着重探讨MessageBox在这一过程中的关…

鸿蒙Ability开发-Stage模型下Ability的创建和使用

创建Ability和Page页面 创建两个Ability:EntryAbility,DetailsAbility,其中EntryAbility是由工程默认创建的,这里我们只讲如何创建DetailsAbility。 使用DevEco Studio,选中对应的模块,单击鼠标右键&…

vcpkg安装zlmediakit(windows环境)

文章目录 一、简介二、vcpkg安装1. vcpkg源码下载2. vcpkg安装 三、安装zlmediakit1. 默认安装开启特性: [core,mp4,openssl,webrtc]2. 安装全部特性zlmediakit(包括webrtc datachannel)3. 安装路径4. 安装不同的版本5. 卸载 四、问题1. 启动服务乱码问题 一、简介 vcpkg是一个…

Saprk SQL基础知识

一.Spark SQL基本介绍 1.什么是Spark SQL Spark SQL是Spark多种组件中其中一个,主要是用于处理大规模的[结构化数据] Spark SQL的特点: 1).融合性:既可以使用SQL语句,也可以编写代码,同时支持两者混合使用. 2).统一的数据访问:Spark SQL用统一的API对接不同的数据源 3).H…

超好用的阅读器更新摸鱼模式啦

潮汐阅读器重磅更新啦!这次更新的是隐蔽模式(摸鱼模式)。 何为隐蔽模式?就是将阅读窗口的标题栏隐藏掉,从而可以使阅读窗口可以隐藏在任意其他窗口里面不被发现,从而可以快乐的看小说摸鱼啦! …

18.将文件上传至云服务器 + 优化网站的性能

目录 1.将文件上传至云服务器 1.1 处理上传头像逻辑 1.1.1 客户端上传 1.1.2 服务器直传 2.优化网站的性能 2.1 本地缓存优化查询方法 2.2 压力测试 1.将文件上传至云服务器 客户端上传:客户端将数据提交给云服务器,并等待其响应;用户…

软件工程造价师证书有用吗?难不难考?

🎯软件工程造价师证书是有用的,它证明了持有人具备评估和估算软件开发cheng本、进度和资源规划的能力。✔️在IT行业中,受高度重视,特别是在软件开发和项目管理领域。 👩软件工程造价师考试难易程度因人而异。该证书需…

影响代理IP稳定性的因素有哪些?

代理IP作为一种网络服务,在生活中扮演着各种各样的角色。它们可以用于保护隐私、突破访问限制、提高网络安全性等。代理IP的稳定性受到多种因素的影响,下面和大家探讨一下影响代理IP稳定性的因素。 1、网络环境:代理IP所处的网络环境对它的稳…

腾讯云新用户的定义与权益

腾讯云作为国内领先的云计算服务提供商,吸引了越来越多的用户。对于新用户来说,了解腾讯云的新用户定义和相关权益非常重要,因为它关系到用户能否享受到更多的优惠和服务。 一、腾讯云新用户的定义 腾讯云新用户是指首次注册腾讯云账号并且没…

【数据库】mysql事务

一、事务的基本概念 1、事务的定义 事务可由一条非常简单的SQL语句组成,也可以由一组复杂的SQL语句组成。。 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行&…

Java技术专题:「入门到精通系列」深入探索常用的六种加密技术和实现

文章目录 1. 引言2. 对称加密3. 非对称加密4. 哈希算法5. 消息摘要6. 数字签名7. 数字证书8. 拓展功能与未来展望 🎉欢迎来到Java学习路线专栏~探索Java中的静态变量与实例变量 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒🍹✨博客主页:IT陈寒的博客&am…

产品经理如何选择城市?

年底,全国性的人口大迁徙即将开始。选择城市,堪称年轻人的“二次投胎”,族望留原籍,家贫走他乡。 古人在选择城市时,主要的考量因素是家族势力,这一点放在当代,大致也成立,如果在老…

如何在CentOS安装SQL Server数据库并通过内网穿透工具实现公网访问

文章目录 前言1. 安装sql server2. 局域网测试连接3. 安装cpolar内网穿透4. 将sqlserver映射到公网5. 公网远程连接6.固定连接公网地址7.使用固定公网地址连接 前言 简单几步实现在Linux centos环境下安装部署sql server数据库,并结合cpolar内网穿透工具&#xff0…

C# 反射的终点:Type,MethodInfo,PropertyInfo,ParameterInfo,Summry

文章目录 前言反射是什么?常用类型操作SummryPropertyInfoMethodInfo无参函数运行 有参函数运行,获取paramterInfo 总结 前言 我之前写了一篇Attribute特性的介绍,成功拿到了Attribute的属性,但是如果把Attribute玩的溜,那就要彻…

什么是企业数字化转型?数字化的价值体现在哪里?

从2015年接触平安的数字化转型,到2021年承接阿里云的服务数字化项目,再到2023年主导大大小小10来个数字化项目,8年的时间,数字化对我而言已经从一个“新词”变成了一个“旧词”。 8年过去,数字化也从一道企业的“选做…