当前位置: 首页 > news >正文

【TypeScript】枚举类型

在 TypeScript 中,枚举(Enum)是一种用于定义命名常量集合的数据类型。枚举使代码更加可读和可维护,因为它们为一组具有语义的值提供了命名。

以下是 TypeScript 中枚举的基本用法和特点:

// 声明一个枚举
enum Direction {North,South,East,West
}// 使用枚举值
console.log(Direction.North); // 输出:0// 修改枚举值
console.log(Direction.East); // 输出:2

枚举的特点:

  1. 枚举中的每个成员都有一个关联的数字值,称为枚举值。默认情况下,从 0 开始,逐一递增。

  2. 枚举值可以通过成员的名字或者成员的值来访问。

  3. 枚举可以具有字符串、数字、或者混合类型的值。

  4. 枚举成员的值可以手动指定,从而覆盖默认的递增行为。

enum Status {Pending = 21,Approved = 'APPROVED',
}console.log(Status.Pending); // 输出:21
console.log(Status.Approved); // 输出:APPROVED
  1. 枚举可以反向映射,即可以通过值找到相应的成员名。
console.log(Status['PENDING']); // 输出:PENDING
  1. 接口枚举
enum Types {a,b
}
interface A {red: Types.a,
}
// 应用场景:把对象属性定义为枚举对象,属性就被限定为只能使用枚举范围内的成员
let obj: A = {red: Types.a
}
  1. const 枚举

index.ts

enum Types {success,fail
}
let code:number = 0
if(code === Types.success){console.log('success')
}else{console.log('fail')
}

编译为对象:

index.js

var Types;
(function (Types) {Types[Types["success"] = 0] = "success";Types[Types["fail"] = 1] = "fail";
})(Types || (Types = {}));
var code = 0;
if (code === Types.success) {console.log('success');
}
else {console.log('fail');
}

而如果用 const 修饰:

index.ts

const enum Types {success,fail
}
let code:number = 0
if(code === Types.success){console.log('success')
}else{console.log('fail')
}

编译为常量:

index.js

var code = 0;
if (code === 0 /* Types.success */) {console.log('success');
}
else {console.log('fail');
}
  1. 反向映射

支持数字,不支持字符串

enum Types {success = 1,fail = 2
}
console.log(Types.success); // 1
// 以下反向映射不可以用 const 修饰 Types
console.log(Types[1]); // success

相关文章:

【TypeScript】枚举类型

在 TypeScript 中,枚举(Enum)是一种用于定义命名常量集合的数据类型。枚举使代码更加可读和可维护,因为它们为一组具有语义的值提供了命名。 以下是 TypeScript 中枚举的基本用法和特点: // 声明一个枚举 enum Direc…...

快速通过华为HCIP认证

你可以按照以下步骤进行准备和学习: 华为认证课程和资料--提取码:1234https://pan.baidu.com/s/1YJhD8QbocHhZ30MvrKm8hg 了解认证要求:查看华为官方网站上的HCIP认证要求和考试大纲,了解考试的内容、考试形式和考试要求。 学习相关知识&am…...

派森 #P124. 公式计算

描述 输入数正整数m,输出0! 1! ...m!的计算结果。 样例 输入 5 输出 154 代码: m int(input()) result 1 factorial 1 for i in range(1, m 1):factorial * iresult factorial print(result) # 法2def factorial(n):"""计…...

opencv进阶14-Harris角点检测-cv2.cornerHarris

类似于人的眼睛和大脑,OpenCV可以检测图像的主要特征并将这 些特征提取到所谓的图像描述符中。然后,可以将这些特征作为数据 库,支持基于图像的搜索。此外,我们可以使用关键点将图像拼接起 来,组成更大的图像。&#x…...

JVM中对象和GC Root之间的四种引用关系

1. 强引用 只有所有 GC Roots 对象都不通过【强引用】引用该对象&#xff0c;该对象才能被垃圾回收 由GC Root直接new出来的对象是强引用&#xff0c;只有当GC Root不再引用该对象的时候&#xff0c;才会被回收 例子&#xff1a; List<String> list new ArrayList<&…...

【李宏毅机器学习】注意力机制

输出 我们会遇到不同的任务&#xff0c;针对输出的不一样&#xff0c;我们对任务进行划分 给多少输出多少 给一堆向量&#xff0c;输出一个label&#xff0c;比如说情感分析 还有一种任务是由机器决定的要输出多少个label&#xff0c;seq2seq的任务就是这种&#xff0c;翻译也…...

Nginx使用keepalived配置VIP

VIP常用于负载均衡的高可用&#xff0c;使用VIP可以给多个主机绑定一个IP&#xff0c;这样&#xff0c;当某个负载应用挂了之后&#xff0c;可以自动切到另一个负载。 我这里是在k8s环境中做的测试&#xff0c;集群中有6个节点&#xff0c;我给140和141两个节点配置VIP。 1. 安…...

C语言编写图形界面

文章目录 环境使用库基础概念句柄 程序的入口创建窗口定义窗口类注册窗口类创建窗口 完整代码运行效果 环境 使用的是VSCode MinGW&#xff1b; 使用库 我们使用windows.h库来实现图形化界面。 头文件如下&#xff1a; #include <windows.h>windows.h是 Windows 操作…...

K8s学习笔记3

Kubernetes功能&#xff1a; Kubernetes是一个轻便的可扩展的开源平台&#xff0c;用于管理容器化应用和服务。通过Kubernetes能够进行应用的自动化部署和扩缩容。在Kubernetes中&#xff0c;会将组成应用的容器组合成一个逻辑单元以更易管理和发现。Kubernetes积累了作为Goog…...

ceph集群的扩容缩容

文章目录 集群扩容添加osd使用ceph-deploy工具手动添加 添加节点新节点前期准备新节点安装ceph&#xff0c;出现版本冲突 ceph-deploy增加节点 集群缩容删除osd删除节点 添加monitor节点删除monitor节点使用ceph-deploy卸载集群 实验所用虚拟机均为Centos 7.6系统&#xff0c;8…...

gremlin安装使用 详细步骤

gremlin是一个图数据库查询工具&#xff0c;注意他只是一个工具类似于dbeaver&#xff0c;navicat&#xff0c;sqlyog&#xff0c;是专门来分析图数据库的一个工具。 下载 下载地址Apache Download Mirrors 省事的可以直接 wget https://www.apache.org/dyn/closer.lua/tin…...

Java语言怎么编写一个程序计算出租车的运输费用:出租车起步15公里以内20块钱,需要支付调头费用

下面是一个Java语言编写的计算出租车运输费用的程序&#xff1a; java import java.util.Scanner; public class TaxiFareCalculator { public static void main(String[] args) { Scanner input new Scanner(System.in); System.out.print("请输入出租车行驶的里程&…...

十、flume的安装

1.解压 2.改名 3.修改权限 4.编辑环境变量并source export FLUME_HOME/usr/local/flume export PATH$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:$HBASE_HOME/bin:$SQOOP_HOME/bin:$PIG_HOME/bin:$FLUME_HOME/bin 5.配置 6.查看版本 7.启动Hadoo…...

互联网广告及产品变现认知分析整理

深入学习互联网广告及产品&#xff0c;并且高效利用这一模式进行变现。 字节先是建立了一个非常强大的用户产品——抖音&#xff0c;通过各种渠道让抖音快速成长起来&#xff0c;收获了一大批初始用户。有了用户基础之后&#xff0c;字节开始打造它的广告产品&#xff0c;逐渐…...

item_search_img-按图搜索淘宝商品(拍立淘)

一、接口参数说明&#xff1a; item_search_img-按图搜索淘宝商品&#xff08;拍立淘&#xff09;&#xff0c;点击更多API调试&#xff0c;请移步注册API账号点击获取测试key和secret 公共参数 请求地址: https://api-gw.onebound.cn/taobao/item_search_img 名称类型必须描…...

OWASP Top 10(2021)漏洞学习(最新)

A01:2021-权限控制失效 从第五位上升到第一位&#xff0c;94%的应用程序都接受了某种形式的针对“失效的访问控制”的测试&#xff0c;该事件的 平均发生率为 3.81%&#xff0c;该漏洞在提供的数据集中出现漏洞的应用数量最多&#xff0c;总发生漏洞应用数量超过31.8万多 次。 …...

mysql 、sql server 游标 cursor

游标 声明的位置 游标必须在声明处理程序之前被声明&#xff0c;并且变量和条件还必须在声明游标或处理程序之前被声明 游标的使用步骤 声明游标打开游标使用游标关闭游标 &#xff08;sql server 关闭游标和释放游标&#xff09; sql server 游标 declare my_cursor curs…...

dockers搭建基本服务

1、使用mysql:5.6和 owncloud 镜像&#xff0c;构建一个个人网盘。 拉取mysql-5.6和owncloud的镜像 docker run -d --name mdb --env MYSQL_ROOT_PASSWORD123 cytopia/mysql-5.6 docker run -d -p 90:80 --name webdcloud --link mdb:mdb owncloud 注册的时候&#xff0c;数据…...

微信小程序纯前端从阿里云OSS下载json数据-完整版

起因 因为云开发开始收费(貌似很久了),准备改造在以前的小程序,数据转到oss上,小程序使用原生,不算专业领域, 所以先百度.... 网上的教程真的是千篇一律,大部分开局就是require(ali-oss); 好点的npm install ali-oss --save开局,拼凑操作到最后发现要用云开发,因为云…...

【微服务实战】01-工程结构概览

文章目录 工程结构概览:定义应用分层及依赖关系1.应用分层2.定义Entity3.仓储层3.1 工作单元&#xff1a;事务管理3.2 仓储层 4.领域事件5.APIController最佳实践 工程结构概览:定义应用分层及依赖关系 1.应用分层 领域模型层基础设施层 ⇒ 仓储应用层 ⇒ Api、后台任务Job共…...

分布式会话管理实战:Session共享与状态管理的完整方案

分布式会话管理实战&#xff1a;Session共享与状态管理的完整方案 大家好&#xff0c;我是迪哥。分布式系统中&#xff0c;会话管理是一个经典问题。从传统的 Session 复制到 Redis 共享&#xff0c;从 JWT Token 到 OAuth2&#xff0c;我们经历了多种方案的演进。今天就聊聊分…...

物联网隐私工程:从数据生命周期到安全设计实践

1. 物联网隐私困境&#xff1a;一个被误解的工程问题每次和同行聊起物联网项目&#xff0c;大家最头疼的往往是协议选型、功耗优化或者成本控制。至于隐私&#xff1f;那通常是产品经理或者法务部门在项目后期才想起来要填的“合规表格”。我自己在早期做智能家居网关时也犯过同…...

聊天机器人技能并行化框架设计与实现:提升响应效率的异步编程实践

1. 项目概述与核心价值最近在折腾一个挺有意思的开源项目&#xff0c;叫mvanhorn/clawdbot-skill-parallel。乍一看这个仓库名&#xff0c;又是“clawdbot”又是“skill-parallel”&#xff0c;感觉像是某种机器人或自动化工具。没错&#xff0c;这正是它的核心。简单来说&…...

量子计算连续门集:原理、实现与优化

1. 量子计算中的连续门集&#xff1a;概念与挑战在量子计算领域&#xff0c;门集(gate set)是实现量子算法的基本构建模块。传统量子计算通常依赖于离散的通用门集&#xff0c;如单量子比特门和CNOT门的组合。然而&#xff0c;这种离散门集在实现某些量子算法时存在明显局限——…...

README智能生成工具:从项目分析到自动化文档的工程实践

1. 项目概述&#xff1a;一个为README注入灵魂的智能工具在开源社区和日常开发中&#xff0c;README文件的重要性不言而喻。它不仅是项目的门面&#xff0c;更是连接开发者与用户、贡献者之间的第一座桥梁。然而&#xff0c;有多少次&#xff0c;我们面对一个功能强大但文档寥寥…...

AI治理实战:从公平性、可解释性到MLOps全流程落地

1. 项目概述与核心价值最近在整理开源项目时&#xff0c;发现了一个名为“AI_governance”的仓库&#xff0c;作者是bhavya7995。这个标题立刻引起了我的兴趣。在AI技术飞速渗透到各行各业&#xff0c;从代码生成到内容创作&#xff0c;从自动驾驶到医疗诊断的今天&#xff0c;…...

认知神经科学研究报告【20260062】

ForeSight 5.88.2 算术推理能力报告 主题&#xff1a;从个位数原子规则到多位数加减法的&#xff2c;&#xff14;&#xff0b;自主涌现一、系统拥有的先验知识 系统仅被赋予 390 条个位数四则运算的原子事实&#xff08;如 358、7963、1-7-6&#xff09;&#xff0c;这些是最底…...

别再乱用工作队列了!深入Linux内核workqueue的5个特性与3个常见使用误区

深入Linux内核workqueue&#xff1a;5个核心特性与3个高频避坑指南 在Linux内核开发中&#xff0c;工作队列&#xff08;workqueue&#xff09;作为异步任务处理的核心机制&#xff0c;其设计哲学远比表面看到的API调用复杂得多。许多开发者虽然能够熟练使用schedule_work()等基…...

从AgentKit看AI应用工程化:架构演进与可靠性设计

1. 项目概述&#xff1a;一个已归档的AI应用快速启动器如果你在2023年到2024年初关注过AI应用开发&#xff0c;特别是基于大语言模型&#xff08;LLM&#xff09;的智能体&#xff08;Agent&#xff09;构建&#xff0c;那么你很可能听说过或者尝试过AgentKit。这个由BCG X&…...

如何为Windows文件系统解锁完整的元数据管理功能:FileMeta完整指南

如何为Windows文件系统解锁完整的元数据管理功能&#xff1a;FileMeta完整指南 【免费下载链接】FileMeta Enable Explorer in Vista, Windows 7 and later to see, edit and search on tags and other metadata for any file type 项目地址: https://gitcode.com/gh_mirrors…...