【TS】快速上手(三)枚举类型

在这里插入图片描述

嗨!~ 大家好,我是YK菌 🐷 ,一个微系前端 ✨,爱思考,爱总结,爱记录,爱分享 🏹,欢迎关注我呀 😘 ~ [微信公众号:ykyk2012]

「这是我参与11月更文挑战的第26天,活动详情查看:2021最后一次更文挑战

今天我们来简单介绍介绍TS中新增的枚举类型

起步

比如我们在定义一个对象的时候

let person = { name: 'yk', gender: 'male' }

gender这种属性的取值一般只有两个,所以在存储的时候用数字来代替,可以提高效率,可以定义0表示女性,1表示男性

let person = { name: 'yk', gender: 1 }

但是这样可读性变差了,而且还不方便管理,这就引出我们今天要谈的枚举类

默认枚举【数字枚举】

可以定义一个Gender枚举类

enum Gender {
  'male',
  'female'
}

怎么使用呢,就和使用对象中的属性一样Gender.male

let person = { name: 'yk', gender: Gender.male }

枚举类中,将这些属性都默认定义成了数字,默认是从0开始

我们看看这个枚举类转义成JS是什么 https://www.typescriptlang.org/play

"use strict";
var Gender;
(function (Gender) {
    Gender[Gender["male"] = 0] = "male";
    Gender[Gender["female"] = 1] = "female";
})(Gender || (Gender = {}));

通过看这个js代码,我们可以发现,这不是简单的赋值为0,而是套了一层,也就是说,这个枚举类是支持正反映射的,什么意思呢

不但可以通过Gender.male取到0
还可以通过Gender[0]取到male

console.log(Gender.male) // 0
console.log(Gender['male']) // 0
console.log(Gender[0]) // male

自定义枚举【字符串枚举】

默认的枚举类型的值都是数字类型的,所以我们称之为数字枚举,默认是从0开始递增的,我们也可以自定义数字,如果只定义第一个,后面的数字就依据你定义的递增

image.png

当然不止数字类型,也可以定义成字符串类型

enum Gender {
  'male'= 'this is male.',
  'female' = 'this is female'
}

这样就提供了有意义且可调试的字符串,因此可以被更容易地处理和调试

image.png

我买看转义成js是什么样的

image.png

这就和数字枚举就不太一样了,不能通过属性值反向取到属性名了

当然也可以将两种类型混合定义【异构枚举】

enum Gender {
  'male'= 'this is male.',
  'female' = 1
}

常量枚举

enum前面加上const,表示常量枚举

我们先看普通的枚举类型转义之后是什么

image.png

再看看常量枚举转义之后是什么

image.png

可以看到,代码一下子精简了很多。定义的枚举类编译之后直接以值(常量)的形式来使用

今天就先介绍这么多啦~ 阿宝哥有一篇博文写的特别详细: 一文让你彻底掌握 TS 枚举
最后,欢迎关注我的专栏,和YK菌做好朋友

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值