06 # 枚举类型

一个角色判断例子

function initByRole(role) {if (role === 1 || role === 2) {// do sth} else if (role === 3 || role === 4) {// do sth} else if (role === 5) {// do sth} else {// do sth}
}

上面的代码存在的问题:

  • 可读性差:很难记住数字的含义
  • 可维护性差:代表角色的数字硬编码了,牵一发动全身

可以使用 ts 里的枚举类型来解决

枚举

枚举:一组有名字的常量集合。(可以理解成手机里的通讯录:姓名-手机号)

数字枚举

默认取值从 0 开始,后面的成员递增。

enum Role {Reporter,Developer,Maintainer,Owner,Guest
}
console.log(Role);

在这里插入图片描述
枚举的实现原理:反向映射:既可以使用 key 索引,也可以使用 value 索引
在这里插入图片描述

字符串枚举

字符串枚举不能进行反向映射

enum Message {Success = 'success',Fail = 'fail'
}
console.log(Message);

在这里插入图片描述

在这里插入图片描述

异构枚举

数字枚举与字符串枚举混用(不建议使用,容易引起混淆)

enum Status {OK = 200,Error = 'Error'
}
console.log(Status);

在这里插入图片描述

在这里插入图片描述

枚举成员

枚举成员的值只读。

Role.Reporter = 2; // 无法为“Reporter”赋值,因为它是只读属性。

枚举成员分类:

  • 常量枚举成员:会在编译的过程中计算出结果,以常量的形式出现在运行时环境
    • 没有初始值
    • 对已有枚举的引用
    • 一些常量表达式
  • 计算枚举成员:非常量的表达式,其值会在运行时环境计算
    • 注意: 计算枚举成员后的枚举成员要赋予初始值
enum Char {// consta,b = Char.a,c = 1 + 3,// computedd = Math.random(),e = '123'.length,f = 4
}

在这里插入图片描述

常量枚举

用 const 声明的枚举就是一个常量枚举。

特性:会在编译阶段被移除。编译后没有任何代码。

作用:当我们不需要一个对象,但需要对象值的时候,可以使用常量枚举。可以减少编译环境的代码。

const enum Month {Jan,Feb,Mar
}
let month = [Month.Jan, Month.Feb, Month.Mar]

在这里插入图片描述

枚举类型

enum E {a,b
}
enum F {a = 0,b = 1
}
enum G {a = "apple",b = "banana"
}let e: E = 1;
let f: F = 1;
// 此比较似乎是无意的,因为类型“E”和“F”没有重叠。
// e === flet e1: E.a;
let e2: E.b;
let e3: E.a;let g1: G = G.b;
let g2: G.a = G.a;

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

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

相关文章

Redis 基础、字符串、哈希、有序集合、集合、列表以及与 Jedis 操作 Redis 和与 Spring 集成。

目录 1. 数据类型 1.1 字符串 1.2 hash 1.3 List 1.4 Set 1.5 sorted set 2. jedis操作redis 3. 与spring集成 1. 数据类型 1.1 字符串 String是最常用的数据格式,普通的kay-value都归结为此类, value值不仅可以是string,可以是数字…

【Apifox】token的使用方式和脚本示例

前言,关于token的使用,仅做了简单的demo测试token效果。 一、手动登录获取token 顾名思义,因为只有登录之后才有token的信息,所以在调用其他接口前需要拥有token才能访问。 操作步骤 1)添加环境变量、全局参数 这里拿测试环境举…

前端编码规范

文章目录 一、背景二、内容1、注释规范(1)文件注释(2)函数注释(3)单行注释(3)多行注释 2、命名规范(1)项目命名(2)目录命名&#xff0…

Bug 检查 0x7B:INACCESSIBLE_BOOT_DEVICE(未解决)

环境: HP ProDesk 480 G7 Win10 专业版 问题描述: INACCESSIBLE_BOOT_DEVICE bug 检查的值为0x0000007B。 此 bug 检查表明 Microsoft Windows 操作系统在启动过程中无法访问系统分区 原因: 1.INACCESSIBLE_BOOT_DEVICE bug 检查经常发生…

大数据Hadoop-HDFS_元数据持久化

大数据Hadoop-HDFS_元数据持久化 (1)在HDFS第一次格式化后,NameNode(即图中的主NameNode)就会生成fsimage和editslog两个文件; (2)备用NameNode(即图中的备NameNode&…

【学习笔记】GAN实战(基础)

本文介绍构建和训练生成对抗网络(GAN)的方法。 生成对抗网络(GAN)与生成模型导论 生成对抗网络(Generative Adversarial Network,GAN) GAN简介 机器学习算法擅长识别已有数据中的模式,并将这种能力用于分类(为样本分配正确类别)和回归(根据一系列的输入进行数值…

【Lustre相关】功能实践-03-文件级冗余(FLR)

一、前言 DDN-03.11-File Level Redundancy (FLR) Category:FLR 1、功能介绍 在文件级冗余(File Level Redundancy,FLR)特性出现之前,Lustre文件系统数据冗余完全依赖于后端存储设备(如RAID6)。 Lustre在L…

SpringCloudSleuth+Zipkin 整合及关键包汇总

背景 整合了一下 SpringCloudSleuth Zipkin,本来是很简单的东西,但是最终导出依赖包时没注意,导致目标服务上始终没有纳入 Zipkin 的链路追踪中,本文记录这个过程及关键依赖包。 部署zipkin 官网下载最新的 zipkin 可执行包&a…

创建Asp.net MVC项目实现视图页面数据传值显示

MVC中视图传值 ViewData ViewBag TempData 举例创建三中传值方式实现页面数据展示 MVC中视图传值 Asp.net MVC中Controller向View传值有多种方式,这里简单说一下其中3种方式 ViewData、ViewBag和TempData ViewData ViewData存储数据,ViewData的声明和赋值方…

基于物联网的交叉口智能交通灯控制系统设计与实现

摘 要 智能视频监控技术是近年来新兴的一种利用计算机视觉技术,人工智能技术和数字视频处理技术对监控视频的目标进行识别,通过对此的分析处理,从而对视频监控系统进行控制,智能视频监控技术是一项较为复杂的课题。特别是对运动物…

代码随想录算法训练营第五十九天| 503.下一个更大元素II 42. 接雨水

文档讲解:代码随想录 视频讲解:代码随想录B站账号 状态:看了视频题解和文章解析后做出来了 503.下一个更大元素II class Solution:def nextGreaterElements(self, nums: List[int]) -> List[int]:res [-1] * len(nums)stack []for i in…

普中STM32 单片机资料

普中科技–各型号开发板资料下载链接: ①普中-精灵1开发板: 百度网盘链接:https://pan.baidu.com/s/1Pa8Ep1xmg6uoq17O6Nwyyw?pwd=1234 提取码:1234 ②普中-ESP32开发板: 百度网盘链接:https://pan.baidu.com/s/16VthcbW27oEWp162H3bi6Q?pwd=1234 提取码:1234 一…

Springboot 使用 阿里的 druid 连接池 启用 wall sql防火墙的情况下怎么支持多sql同时执行?

1、问题如上,看了不少网上的文章,在我这都不生效,网上主要的解决思路有两个。 第一个是:去掉配置文件中的 wall filter # 修改之前 spring.datasource.druid.filtersstat,wall,log4j# 修改之前 spring.datasource.druid.filte…

【Pytorch】Visualization of Feature Maps(5)——Deep Dream

学习参考来自: PyTorch实现Deep Dreamhttps://github.com/duc0/deep-dream-in-pytorch 文章目录 1 原理2 VGG 模型结构3 完整代码4 输出结果5 消融实验6 torch.norm() 1 原理 其实 Deep Dream大致的原理和【Pytorch】Visualization of Feature Maps(1&…

一次Apollo Client升级导致的生产404 Not Found问题排查记录

概述 本文记录一次升级Apollo Client组件到1.7.0后遇到的重大生产事故。只想看结论的,可直接快进到文末。实际上,第一句话就是一个结论。 另,本文行文思路事后看起来可行略显思路清晰,实际上排查生产问题时如无头苍蝇&#xff0…

Python TypeError: int() argument must be a string, a bytes原因

int()函数的TypeError Python开发过程中,使用int()函数来转换或生成int类型的数据时,如果Python抛出并提示TypeError: int() argument must be a string, a bytes-like object or a real number, not complex,那么原因在于传递给int()函数的…

45、Flink 的指标体系介绍及验证(3)- 完整版

Flink 系列文章 1、Flink 部署、概念介绍、source、transformation、sink使用示例、四大基石介绍和示例等系列综合文章链接 13、Flink 的table api与sql的基本概念、通用api介绍及入门示例 14、Flink 的table api与sql之数据类型: 内置数据类型以及它们的属性 15、Flink 的ta…

day67

今日回内容 视图层 响应对象 cbv和fbv 上传文件 模板层 视图层 一、响应对象 响应对象的本质都是 HttpResponse HttpResponse:字符串 render: 将一个模板页面中的模板语法进行渲染,最终渲染成一个html页面作为响应体。 redirect:重定向 …

Java SpringBoot DES加密解密

可以使用 hutool加密 ,在本地没什么问题,但是在服务器会出现JDK安全问题 JCE cannot authenticate the provider BC 可以在本地写工具类进行DES加密 package com.neusoft.hit.cmpd.emg.nurse.information.utils;import javax.crypto.BadPaddingExceptio…

MATLAB基础应用精讲-【基础知识篇】MATLAB脚本和函数

目录 循环和条件语句 函数文件 函数句柄 输入参数数量 变量名称 实时脚本