TS (enum)枚举

news2024/10/2 18:15:16

枚举(enum)可以定义一组命名常亮,增强代码的可读性,也可以让代码更好的维护。

在刚开始先来一段代码来感受一下:

function walk(str: string) {
  if (str === 'up') {
    console.log('向【上】⾛')
  } else if (str === 'down') {
    console.log('向【下】⾛')
  } else if (str === 'left') {
    console.log('向【左】⾛')
  } else if (str === 'right') {
    console.log('向【右】⾛')
  } else {
    console.log('未知⽅向')
  }
}

walk('up')
walk('down')
walk('left')
walk('right')

数字枚举

数字枚举是一种最常见的枚举类型,其成员的值会自动递增,并且数字枚举还具备反向映射的特点。

看以下代码:

enum Direction {
  Up,
  Down,
  Left,
  Right
}

console.log(Direction) // 打印Direction会看到如下内容
/*
    {
    0:'Up',
    1:'Down',
    2:'Left',
    3:'Right',
    Up:0,
    Down:1,
    Left:2,
    Right:3
    }
    */

// 反向映射
console.log(Direction.Up)
console.log(Direction[0])

// 此⾏代码报错,枚举中的属性是只读的
Direction.Up = 'shang'

经过改良后的代码可以写成这样:

enum Direction {
  Up,
  Down,
  Left,
  Right
}

function walk(n: Direction) {
  if (n === Direction.Up) {
    console.log('向【上】⾛')
  } else if (n === Direction.Down) {
    console.log('向【下】⾛')
  } else if (n === Direction.Left) {
    console.log('向【左】⾛')
  } else if (n === Direction.Right) {
    console.log('向【右】⾛')
  } else {
    console.log('未知⽅向')
  }
}

walk(Direction.Up)
walk(Direction.Down)

字符串枚举

顾名思义,枚举成员的值是字符串

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

let dir: Direction = Direction.Up
console.log(dir) // 输出: "up"

常亮枚举

官方描述:常亮枚举是一种特殊枚举类型,它使用  const  关键字进行定义,在编译的时候避免生成一些额外的代码。

接下来看一个对比:

这是不适用常亮枚举的:

enum Directions {
  Up,
  Down,
  Left,
  Right
}

let x = Directions.Up

编译后的是这样的:

'use strict'
var Directions
  ;(function (Directions) {
  Directions[(Directions['Up'] = 0)] = 'Up'
  Directions[(Directions['Down'] = 1)] = 'Down'
  Directions[(Directions['Left'] = 2)] = 'Left'
  Directions[(Directions['Right'] = 3)] = 'Right'
})(Directions || (Directions = {}))

let x = Directions.Up

 这是只用常亮枚举的:

const enum Directions {
  Up,
  Down,
  Left,
  Right
}

let x = Directions.Up

编译后的:

"use strict";
let x = 0 /* Directions.Up */;

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

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

相关文章

数据结构——“AVL树”的四种数据旋转的方法

因为上次普通的二叉搜索树在极端情况下极容易造成我们的链式结构(这会导致我们查询的时间复杂度变为O(n)),然而AVL树就很好的解决了这一问题(归功于四种旋转的方法),它让我们的树的查询的时间复杂度变得接近…

TIM(Timer)定时器的原理

一、介绍 硬件定时器的工作原理基于时钟信号源提供稳定的时钟信号作为计时器的基准。计数器从预设值开始计数,每当时钟信号到达时计数器递增。当计数器达到预设值时,定时器会触发一个中断信号通知中断控制器处理相应的中断服务程序。在中断服务程序中&a…

无人化焦炉四大车系统 武汉正向科技 工业机车无人远程控制系统

焦炉四大车无人化系统介绍 采用格雷母线光编码尺双冗余定位技术,炉门视觉定位自学习技术,wifi5G无线通讯技术,激光雷达安全识别技术,焦化智慧调度,手机APP监控功能。 焦炉四大车无人化系统功能 该系统能自动生成生产…

遥感图像垃圾处理场分割,北京地区高分2图像,3500张图像,共2GB,分割为背景,空地,垃圾,垃圾处理设施四类

遥感图像垃圾处理场分割,北京地区高分2图像,3500张图像,共2GB,分割为背景,空地,垃圾,垃圾处理设施四类 遥感图像垃圾处理场分割数据集 规模 图像数量:3500张数据量:2G…

黑科技!Llama 3.2多模态AI震撼发布

黑科技!Llama 3.2多模态AI震撼发布 Meta发布Llama 3.2模型🚀,引领AI新潮流!它能处理文字、图片、视频📸,满足不同需求,性能媲美大牌选手✨。一键启动包已准备好,让你轻松体验AI的魔…

模版and初识vector

一、引言 在C语言中,不论是数组,还是结构体定义的数组,功能都比较欠缺,不是单纯的添加几个变量就能够解决的。缺少增删查改的功能,为了解决这个问题,C决定填上C语言这个坑,但是填过坑的人都知道…

秋招突击——算法练习——复习{双指针:移动零、盛最多的水、三数之和}——新作{接雨水}

文章目录 引言复习移动零盛最多的水三数之和 新作接雨水个人实现参考实现 总结 引言 这段时间还是很迷茫的,秋招到了一个阶段,但是收获并不是很多,基本上都在泡池子,没有意向。也就没有在坚持刷题,只是整理一些专门的…

Arduino UNO R3自学笔记15 之 Arduino如何驱动数码管?

注意:学习和写作过程中,部分资料搜集于互联网,如有侵权请联系删除。 前言:学习使用数码管。 1.数码管介绍 数码管的一种是半导体发光器件,数码管可分为七段数码管和八段数码管,区别在于八段数码管比七段数…

【数据结构】图论基础

文章目录 图的概念图的基本概念图的类型图的表示方法 图的相关基本概念1. 路径(Path)2. 连通性(Connectivity)3. 图的度(Degree)4. 子图(Subgraph)5. 生成树(Spanning Tr…

LabVIEW提高开发效率技巧----快速实现原型和测试

在LabVIEW开发中,DAQ助手(DAQ Assistant)和Express VI为快速构建原型和测试功能提供了极大的便利,特别适合于简单系统的开发和早期验证阶段。 DAQ助手:是一种可视化配置工具,通过图形界面轻松设置和管理数据…

CSS3渐变

一、线性渐变 通过background-image: linear-gradient(...)设置线性渐变 语法: linear-gradient(direction,color1,color2, . . ) direction:渐变方向,默认从上到下,可选值: 简单选取: ① to right&…

Python和C++及MATLAB和R时间序列中数学物理金融气象运动和电子材料

🎯要点 小波分析,量化噪声概率分布和统计推理物理量和化学量数值计算确定性非线性系统金融资本市场和市场流动性波形传播气象建模评估 Python时间序列数学 时间序列分析是一种强大的统计技术,广泛应用于经济学、金融学、环境科学和工程学…

基于SSM+Vue技术的定制式音乐资讯平台

文未可获取一份本项目的java源码和数据库参考。 一、选题的背景与意义: 随着个人计算机的普及和互联网技术的日渐成熟,网络正逐渐成为人们获取信息及消费的主要渠道。然而在当前这个信息时代,网络中的信息种类和数量呈现爆炸性增长的趋势&a…

基于Node.js+Express+MySQL+VUE实现的在线电影视频点播网站管理系统的设计与实现部署安装

目录 1. 引言 1.1开发背景 1.2开发意义 1.3国内外研究 2. 需求分析 3. 系统架构设计 4. 关键技术选型 5. 功能模块设计 5.1功能图 5.2界面介绍 6. 总结 1. 引言 随着互联网技术的快速发展和普及,人们获取信息的方式发生了巨大变化,其中在…

PCL库简单的icp配准

#include <pcl/io/pcd_io.h> #include <pcl/point_types.h> #include <pcl/registration/icp.h>int main(int argc, char** argv) {// 确保提供了两个PCD文件作为输入if (argc ! 3) {PCL_ERROR("请提供两个PCD文件作为输入。\n");return (-1);}// …

dcatadmin 自定义登录页面

一、问题&#xff1a; 在后台管理系统中&#xff0c;不同的项目想要不同的登录页面&#xff0c;但是框架自带的登录页面就只有一个。 解决&#xff1a; 由芒果系统改造的dcatadmin登录插件&#xff0c;实现一键安装改变登录页面。 项目介绍 基于Laravel和Vue的快速开发的后台管…

html5 + css3(上)

目录 HTML认知web标准vscode的简介和使用注释标题和段落换行和水平线标签文本格式化标签图片图片-基本使用图片-属性 绝对路径相对路径音频标签视频标签超链接 HTML基础列表列表-无序和有序列表-自定义 表格表格-使用表格-表格标题和表头单元格表格-结构标签&#xff08;了解&a…

CentOS 6文件系统

由冯诺依曼在 1945 年提出的计算机五大组成部分&#xff1a;运算器&#xff0c;控制器&#xff0c;存储器&#xff0c;输入设 备&#xff0c;输出设备。 1. 硬盘结构&#xff1a; &#xff08;1&#xff09;机械硬盘结构&#xff1a; 磁盘拆解图&#xff1a; 扇区&#xff0c;…

白杨SEO:抖音上做自然搜索流量怎么挖掘出抖音流量关键词及布局进去?【举例】

前言&#xff1a;为什么想到再分享这个&#xff1f;因为发现很多人在抖音做搜索流量时怎么挖掘抖音关键词这个基础以及怎么布局进去不太清楚&#xff0c;所以再来写下&#xff0c;希望对大家有帮助。 文章大纲&#xff1a; 1、抖音搜索流量如何确定业务词&#xff1f; 2、抖音…

Ubuntu下安装Zookeeper集群

Zookeeper集群是一个开源的分布式协调服务系统&#xff0c;它由Apache软件基金会维护&#xff0c;旨在为分布式应用提供一致性和可靠性的服务。 在Zookeeper集群中&#xff0c;服务器可以扮演三种角色——领导者&#xff08;Leader&#xff09;、跟随者&#xff08;Follower&a…