TS系列教程十三:枚举Enum

151 阅读1分钟

简介

Enum是为了消除魔法数字而存在的

const resultData={sex:0};//后端返回的数据
//以前的写法
if(resultData==0){
    //***
}
//Enum的写法
enum SexEnum{
    male,
    female
}
if(resultData.sex==SexEnum.male){
    //***
}

enum也是键值对形式存在的,如果值不写那就从0开始,依次往后推

enum SexEnum{
    male,
    female
}
//转换为js
let male=0,female=1;

enum既是类型也是值,也是ts中为数不多的转换为js能留下痕迹的指令

只读

enum是只读的,定义后无法被修改

enum SexEnum{
    male,
    female
}
SexEnum.male=1;//报错

enum SexEnum{
    male,//0
    female//1
}
enum SexEnum{
    male=5,
    female//6
}
enum SexEnum{
    male=5,
    female=5
}

可以手动赋值 后边的值如果没指定自动加1,成员可以是相同的值,值只能是数值或字符串

同名合并

enum Person{
    name='张三'
}
enum Person{
    age=18
}
//相当于是
enum Person{
    name='张三',
    age=18
}

反向映射

可以通过值取属性名,类型数组的写法。

enum Person{
    name='张三',
    age=18,
}
console.log(Person[0]);//undefined
console.log(Person['张三']);//undefined
console.log(Person[18]);

可以看到只能拿值是数字的属性,