typescript枚举

2023-11-10

一,前言

1.enum是在typescript中新增的合法类型,是对JavaScript标准数据类型的一个补充。

2.enum主要作用是可以为一组限定范围内数值赋予友好的名字。

二,enum介绍

1.enmu的基本形式如下

enum Animals {
	Dog,
	Cat,
	Pig,
}

2.根据值和定义形式主要可以分为三种类型:数字枚举字符串枚举常量枚举

三,数字枚举

1.枚举值为数字的为数字枚举

enum Animals {
	Dog=1,
	Cat=2,
	Pig=3,
}

2.默认情况下,若不手动为枚举成员赋值,则会被定义成数字枚举,且从编号0开始递增为枚举成员赋值

enum Animals {
	Dog,
	Cat,
	Pig,
}

console.log(Animals.Dog)  //0
console.log(Animals.Cat)  //1
console.log(Animals.Pig)  //2

3.我们可以为其中的一个或多个手动赋值,之后的顺位按赋值的数值递增

enum Animals {
	Dog,
	Cow=5,
	Cat=2,
	Pig,
}

console.log(Animals.Dog)  //0
console.log(Animals.Cow)  //5
console.log(Animals.Cat)  //2
console.log(Animals.Pig)  //3

4.枚举项有两种类型:常数项计算所得项,前面所说的都是常数项,需要注意的是,当其中一项为计算所得项时,那么它的下位一定要赋予初始值,否则会报错,由于使用计算所得项,自动计算下位失效了。

enum Animals {
	Dog,
	Cow=Math.random(), //Cow为常数项
	Cat=2, //下一位需要赋予初始值,否则会报错
	Pig,
}

二,字符串枚举

1.枚举值为字符串的为字符串枚举

enum Animals {
	Dog="dog",
	Cat="cat",
	Pig="pig",
}

2.字符串枚举值要求每个字段的值都必须是字符串字面量,不能使用计算所得项

三,常数枚举

1.使用const enmu创建的枚举为常数枚举

const enum Animals {
	Dog="dog",
	Cat="cat",
	Pig="pig",
}

2.常数枚举和普通枚举的区别就是常数枚举本身会在编译的时候被删除,只会在使用到的地方,拿到相应的值进行替换。

四,反向映射

1.当我们定义了枚举可以使用enmu.key或者enmu[key]来获取值

const enum Animals {
	Dog="dog",
	Cat="cat",
	Pig="pig",
}

console.log(Animals["Dog"]) //dog
console.log(Animals.Cat) //cat

2.不仅如此我们可以根据值来获取枚举项的key

const enum Animals {
	Dog,
	Cat,
	Pig,
}
console.log(Animals[0]) //Dog
console.log(Animals[2]) //Pig

五,枚举类型

1.枚举本身和枚举成员可以作为一种类型来声明变量

enum Animals {
	Dog,
	Cat,
	Pig,
}

let test:Animals = Animals.Dog //枚举本身作为类型,只能赋值枚举里的枚举项
let test:Animals = 12 //声明了是Animals类型,赋值其他值会报错


let test:Animals.Dog = Animals.Dog //枚举成员作为类型,只能赋值相应的枚举值
let test:Animals.Dog = Animals.Cat //报错
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

typescript枚举 的相关文章

随机推荐

  • 【PC】响应式HTML5网页项目

    快速完成网页设计 10个顶尖响应式HTML5网页模板助你一臂之力 为了寻找一个优质的网页模板 网页设计师和开发者往往可能会花上大半天的时间 不过幸运的是 现在的网页设计师和开发人员已经开始共享HTML5 Bootstrap和CSS3中的免费
  • untiy 监听屏幕点击 物体(实现)

    第一种方式 1 百度的第三方法 using System Collections using System Collections Generic using UnityEngine using UnityEngine UI public
  • linux下nginx+php安装

    初始nginx php环境文件复制安装 需要复制的文件列表 usr local nginx usr local php usr local php 5 4 35 data mexue apps mysql etc init d mysqld
  • C#反射:GetManifestResourceStream

    public virtual Stream GetManifestResourceStream string name 参数 name 类型 System String 所请求的清单资源的名称 区分大小写 name格式 项目名称 文件名 通
  • 区块链:单位(Units) 和 全局变量(Globally Available Variables)

    Ether Units 一个整数的后面可以跟一个单位 ether finney szabo或者wei 他们的单位换算如下 1 ether 1000 finney 1 ether 1000000 szabo 1 ether 10 18 wei
  • sql count中加条件

    一般的 我们会在where 或者 having中加条件 count中只是某个字段 今天看到另外一种写法 不知道性能怎么样 select count case when xxx gt 10 and yyy lt 99 then bbb els
  • gitlab的安装过程以及如何修改默认端口

    工欲善其事 必先利其器 此文讲述的是gitlab的安装历程 需要有一定的英文阅读能力者 安装环境 ubuntu Ubuntu 17 04 官方推荐需要的硬件条件 Storage a fast drive 7200 RPM and up or
  • tsconfig.json的esModuleInterop使用场景是怎样的?

    问题场景 npm包改造前 仅支持esm npm包改造后 既支持esm 又支持cjs 为什么改造后 还是会报错 如何理解ts编译配置esModuleInterop 总结 问题场景 遇到一个很有趣的场景 cjs中需要引入原先打包方式为esm方式
  • 基于NSGA算法解决地形路径规划问题(MATLAB代码)

    基于NSGA算法解决地形路径规划问题 MATLAB代码 地形路径规划是一个重要的问题 涉及到在具有复杂地形的环境中找到一条最佳路径 NSGA Non dominated Sorting Genetic Algorithm 是一种多目标优化算
  • WSL 的基本命令

    文章目录 安装 列出可用的 Linux 发行版 列出已安装的 Linux 发行版 将 WSL 版本设置为 1 或 2 设置默认 WSL 版本 设置默认 Linux 发行版 将目录更改为主页 通过 PowerShell 或 CMD 运行特定的
  • dmmbus地址_dmmbus.cc服务器iP

    2019 03 05 2020 12 19 69 171 233 37 2019 03 05 2020 12 19 69 171 245 84 2019 03 05 2020 12 19 69 171 247 20 2019 03 05 2
  • curl支持ssl报错:SSL certificate problem: unable to get local issuer certificate

    curl去访问https的站点报错 curl v https www baidu com SSLv3 TLS handshake Client hello 1 SSLv3 TLS handshake Server hello 2 SSLv3
  • 解决Cannot resolve plugin org.apache.maven.plugins:maven-site-plugin:3.3问题

    在maven项目中遇到这个问题 判断是版本不一致问题 解决 打开设置 Build Execution Deployment Build Tools Maven 如下图 问题的原因出在 在该项目集成的maven和当前项目设置不统一 可能是之前
  • Spring Security学习一-控制同个帐号当前只能有一个登录

    Date 2016 09 14 Author Kagula Envronment 1 JDK 1 7 0 79 2 apache tomcat 7 0 68 3 Eclipse Mars2 Introduction 据 spring sec
  • es6数组方法图解

    最近接触了一些 web前端开发人员 发现还是很多人不适用es6 提供的语义化api 下面分享下看到的图解 es6 数组方法 很形象的es6数组方法解释
  • JavaScript-----个性名片案例展示

    目录 前言 效果展示 代码 html代码 CSS代码 图片资源 前言 今天我们就通过刚刚学习的JavaScript知识点以及前面学习了的html和CSS的知识点去做一个小作品 这是一个个性名片的案例 有代码资源和图片资源 希望大家喜欢 效果
  • PgSQL个人学习笔记(一)——PgSQL介绍

    一 什么是PgSQL PgSQL 全称PostgreSQL 是一个功能强大的开源对象 关系型数据库系统 结合了许多安全存储和扩展最复杂数据工作负载的功能 它支持大部分SQL标准并且提供了许多其他现代特性 二 特性 价钱 开源 函数 通过函数
  • c++重载类型转换运算符

    类型转换运算符 类型转换运算符是类的一种特殊成员函数 负责将一个类类型的值转换成其他类型 一个类型转换函数必须是类的成员函数 不能有返回类型 形参列表也必须为空 通常是const的 operator type const class Sma
  • 期待相聚|2023 Google 开发者大会现场见

    直达科技前沿 点亮技术灵感 激发新思妙想 收获多元共进 长按下方图片 扫码报名参会 仅出于确认身份 请填写与身份证件一致的姓名 并确认邮箱地址及联系电话准确无误 2023 Google 开发者大会主旨演讲将会分享 Google 如何通过更智
  • typescript枚举

    一 前言 1 enum是在typescript中新增的合法类型 是对JavaScript标准数据类型的一个补充 2 enum的主要作用是可以为一组限定范围内数值赋予友好的名字 二 enum介绍 1 enmu的基本形式如下 enum Anim