学习TypeScrip10(枚举类型)

简介: 字符串枚举的概念很简单。 在一个字符串枚举里,每个成员都必须用字符串字面量,或另外一个字符串枚举成员进行初始化。

在javaScript中是没有枚举的概念的TS帮我们定义了枚举这个类型


使用枚举 通过enum关键字定义我们的枚举


1.数字枚举


例如 红绿蓝 Red = 0 Green = 1 Blue= 2 分别代表红色0 绿色为1 蓝色为2


enum Types{
   Red,
   Green,
   BLue
}


这样写就可以实现应为ts定义的枚举中的每一个组员默认都是从0开始的所以也就是


enum Types{
   Red = 0,
   Green = 1,
   BLue = 2
}
//默认就是从0开始的 可以不写值


增长枚举


enum Types{
   Red = 1,
   Green,
   BLue
}


如上,我们定义了一个数字枚举, Red使用初始化为 1。 其余的成员会从 1开始自动增长。 换句话说, Type.Red的值为 1, Green为 2, Blue为 3。


2.字符串枚举


字符串枚举的概念很简单。 在一个字符串枚举里,每个成员都必须用字符串字面量,或另外一个字符串枚举成员进行初始化。


enum Types{
   Red = 'red',
   Green = 'green',
   BLue = 'blue'
}


由于字符串枚举没有自增长的行为,字符串枚举可以很好的序列化。 换句话说,如果你正在调试并且必须要读一个数字枚举的运行时的值,这个值通常是很难读的 - 它并不能表达有用的信息,字符串枚举允许你提供一个运行时有意义的并且可读的值,独立于枚举成员的名字。


3.异构枚举


枚举可以混合字符串和数字成员


enum Types{
   No = "No",
   Yes = 1,
}


4.接口枚举


定义一个枚举Types 定义一个接口A 他有一个属性red 值为Types.yyds


声明对象的时候要遵循这个规则


   enum Types {
      yyds,
      dddd
   }
   interface A {
      red:Types.yyds
   }
   let obj:A = {
      red:Types.yyds
   }


5.const枚举


let  和 var 都是不允许的声明只能使用const


大多数情况下,枚举是十分有效的方案。 然而在某些情况下需求很严格。 为了避免在额外生成的代码上的开销和额外的非直接的对枚举成员的访问,我们可以使用 const枚举。 常量枚举通过在枚举上使用 const修饰符来定义


const 声明的枚举会被编译成常量


普通声明的枚举编译完后是个对象


const enum Types{
   No = "No",
   Yes = 1,
}


Const 声明编译之后


3ff5c0fc49664f42a652860339263559.png


普通声明编译之后


90f8768bb3114370b5cc9bcdcf002ee6.png


6.反向映射


它包含了正向映射( name -> value)和反向映射( value -> name)


要注意的是 不会为字符串枚举成员生成反向映射。


enum Enum {
   fall
}
let a = Enum.fall;
console.log(a); //0
let nameOfA = Enum[a]; 
console.log(nameOfA); //fall


 下一章学习TypeScrip11(类型推论|类型别名)_qq1195566313的博客-CSDN博客

目录
相关文章
|
数据采集 算法 JavaScript
彩票中奖率的真相:用 JavaScript 看透彩票背后的随机算法(上)
原本这篇文章是打算叫「假如我是彩票系统开发者」,但细想一下,如果在文章中引用太多的 JavaScript 的话,反而不是那么纯粹,毕竟也只是我的一厢情愿,彩票开发也不全如本文所讲,有所误导的话便也是得不偿失了。
|
6月前
|
JavaScript 前端开发 API
你真的会使用Vue3的onMounted钩子函数吗?Vue3中onMounted的用法详解
onMounted作为vue3中最常用的钩子函数之一,能够灵活、随心应手的使用是每个Vue开发者的必修课,同时根据其不同写法的特性,来选择最合适最有利于维护的写法。博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
10月前
|
编解码 缓存 算法
视频帧里的I帧、P帧、B帧是什么?
I帧、P帧、B帧是视频编码中的基本概念。I帧是帧内编码帧,无需参考其他帧即可解码;P帧是前向预测编码帧,基于前一帧解码;B帧是双向预测编码帧,基于前后帧解码。IDR帧是一种特殊的I帧,用于即时解码刷新,防止错误传播。GOP(Group of Pictures)是一组连续的画面,第一个帧为I帧,gop_size设置越大,画质越好,但解码延迟增加。OpenGOP允许GOP间的帧依赖,而ClosedGOP则不允许。DTS(解码时间戳)和PTS(显示时间戳)分别用于解码和显示时间控制。
|
JSON Java fastjson
简单实现_实体类与Json字符串互相转换
简单实现_实体类与Json字符串互相转换
313 1
|
11月前
|
人工智能 安全 算法
5G 网络中的加密:守护你的数据安全
5G 网络中的加密:守护你的数据安全
930 0
|
供应链 小程序 Java
基于Java超市库存管理系统设计和实现(源码+LW+调试文档+讲解等)
基于Java超市库存管理系统设计和实现(源码+LW+调试文档+讲解等)
|
JavaScript 小程序 前端开发
【Vue篇】mac上Vue 开发环境搭建、运行Vue项目(保姆级)
【Vue篇】mac上Vue 开发环境搭建、运行Vue项目(保姆级)
4047 2
|
存储 关系型数据库 MySQL
如何处理爬取到的数据,例如存储到数据库或文件中?
处理爬取的数据,可存储为txt、csv(适合表格数据)或json(适合结构化数据)文件。若需存储大量数据并执行复杂查询,可选择关系型(如MySQL)或非关系型(如MongoDB)数据库。以MySQL为例,需安装数据库和Python的pymysql库,创建数据库和表,然后编写Python代码进行数据操作。选择存储方式应考虑数据类型、数量及后续处理需求。
239 1