TypeScript-枚举类型

简介: TypeScript-枚举类型

前言


介绍其基本概念、语法特性以及如何开始使用它来构建类型安全的JavaScript应用程序。无论您是新手还是有经验的开发者,都能在这篇文章中找到有关TypeScript的重要信息和实用技巧。让我们一起探索这个强大的编程语言!

枚举类型是 TS 为 JS 扩展的一种类型,在原生的 JS 中是没有枚举类型的,枚举用于表示固定的几个取值 例如:一年只有四季、人的性别只能是男或者女




定义枚举


enum Gender {
    Male,
    Female
}


如上代码的含义为,定义了一个名称叫做 Gender 的枚举类型, 这个枚举类型的取值有两个, 分别是 MaleFemale

enum Gender {
    Male,
    Female
}
let val: Gender;
val = Gender.Female;
console.log(val);


如上代码的含义为,定义了一个名称叫做 val 的变量, 这个变量中只能保存 Male 或者 Female 运行结果如下:

错误示例,例如给了不是在 Gender 当中定义的值:

enum Gender {
    Male,
    Female
}
let val: Gender;
val = 'nan';
console.log(val);




注意点


TS 中的枚举底层实现的本质其实就是 数值类型,所以赋值一个数值不会报错:

enum Gender {
    Male,
    Female
}
let val: Gender;
val = 0;
console.log(val);
console.log(Gender.Male);
console.log(Gender.Female);


TS 中的枚举类型的取值, 默认是从上至下从 0 开始递增的:

enum Gender {
    Male,
    Female
}
console.log(Gender.Male);
console.log(Gender.Female);


虽然默认是从 0 开始递增的, 但是我们也可以手动的指定枚举的取值的值:

enum Gender {
    Male = 6,
    Female = 9
}
console.log(Gender.Male);
console.log(Gender.Female);


如果手动指定了前面枚举值的取值, 那么后面枚举值的取值会根据前面的值来进行递增:

enum Gender {
    Male = 6,
    Female
}
console.log(Gender.Male);
console.log(Gender.Female);


如果手动指定了后面枚举值的取值, 那么前面枚举值的取值不会受到影响:

enum Gender {
    Male,
    Female = 8
}
console.log(Gender.Male);
console.log(Gender.Female);


我们还可以同时修改多个枚举值的取值,如果同时修改了多个, 那么修改的是什么最后就是什么:

enum Gender {
    Male = 1,
    Female = 8
}
console.log(Gender.Male);
console.log(Gender.Female);


还可以通过枚举值拿到它对应的数字:

enum Gender {
    Male,
    Female
}
console.log(Gender.Male);
console.log(Gender.Female);


还可以通过它对应的数字拿到它的枚举值:

enum Gender {
    Male,
    Female
}
console.log(Gender[0]);



探究底层实现原理


进入:https://www.typescriptlang.org/play?#code/KYOwrgtgBA4qAmwBOUDeAoKWoFkCGANsADSbYBiwEhw6AvkA

将我们的枚举代码复制进去进行编译可以得到经过最终处理的 JS 代码如下:


然后将编译好的 JS 代码复制出来进行分析,发现当中有一个逼格很高,而且很巧妙很灵活的一种写法 Gender[Gender["Male"] = 0] 然后博主亲自去浏览器的控制台当中进行测试一下该语法的返回值就是所对应的 0


弄明白了底层语法的其中不明确的内容之后那么编译之后的 JS 代码可以等价于如下的代码, 其实 TS 实现枚举就是在一个对象当中添加 4 个不同的 key 进行实现的,所以这就是如上我们即可使用数字又可以使用所对应值的原因:

let Gender = {};
Gender["Male"] = 0;
Gender[0] = "Male";
Gender["Femal"] = 1;
Gender[1] = "Femal";

最后


本期结束咱们下次再见👋~

🌊 关注我不迷路,如果本篇文章对你有所帮助,或者你有什么疑问,欢迎在评论区留言,我一般看到都会回复的。大家点赞支持一下哟~ 💗

相关文章
|
20天前
|
JavaScript 前端开发
【面试题】 面试官:说说你对 TypeScript 中枚举类型的理解?应用场景?
【面试题】 面试官:说说你对 TypeScript 中枚举类型的理解?应用场景?
|
20天前
|
JavaScript 前端开发 编译器
TypeScript 中的基础类型:原始类型、对象类型、数组类型、元组类型、枚举类型和联合类型
TypeScript 中的基础类型:原始类型、对象类型、数组类型、元组类型、枚举类型和联合类型
51 1
|
20天前
|
JavaScript 前端开发 编译器
【TypeScript】枚举类型和泛型的详细介绍
【TypeScript】枚举类型和泛型的详细介绍
46 1
|
10月前
|
JavaScript 前端开发
TypeScript深度剖析:TypeScript 中枚举类型的理解?应用场景?
TypeScript深度剖析:TypeScript 中枚举类型的理解?应用场景?
63 0
|
11月前
|
JavaScript 前端开发 API
【TypeScript】枚举类型和泛型的详细介绍
【TypeScript】枚举类型和泛型的详细介绍
|
JavaScript 前端开发
|
JavaScript
Typescript 中的数组、元组和枚举类型
本文介绍了`Typescript` 的数组类型和元组类型,声明数组有两种方式,可以声明为静态类型的数组,也可以使用 `any` 声明为动态类型的数组。元组是一种特殊的数组,特点是长度固定,元素类型固定。然后介绍了 `Typescript` 的枚举类型,枚举类型在开发中经常使用,配合 `switch` 语句十分强大。
492 0
typescript27-枚举类型呢
typescript27-枚举类型呢
69 0
typescript27-枚举类型呢
typescript28-枚举类型的值以及数据枚举
typescript28-枚举类型的值以及数据枚举
75 0
typescript28-枚举类型的值以及数据枚举
typescript29-枚举类型的特点和原理
typescript29-枚举类型的特点和原理
165 0
typescript29-枚举类型的特点和原理