TypeScript中的枚举类型是什么?

2026-04-03 08:331阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1577个文字,预计阅读时间需要7分钟。

TypeScript中的枚举类型是什么?

目录

1.概述

2.数字枚举

2.1 反向映射

3.字符串枚举

TypeScript中的枚举类型是什么?

4.const 枚举

5.总结

1.概述

枚举类型是一组命名的整型常量,用于表示一组相关的数值。它们在编程中常用于定义一组预定义的值,如状态码、颜色、星期等。

2.数字枚举

数字枚举是默认的枚举类型,其中枚举成员自动被赋予从0开始的整数值。

2.1 反向映射

可以通过映射功能将枚举值与其名称关联,方便在代码中进行查找。

3.字符串枚举

字符串枚举允许枚举成员具有字符串值,而不是数字值。

4.const 枚举

const 枚举是 TypeScript 中的一个特性,它使得枚举成员的值在编译时就是常量,而不是运行时变量。

5.总结

所谓的枚举类型就是一组具有命名的数值类型。在 C++、Java 和 TypeScript 等语言中,枚举类型是一种常见的特性,而在 JavaScript 中则通过类来实现类似的功能。

目录
  • 1.概述
  • 2.数字枚举
    • 2.1反向映射
  • 3.字符串枚举
    • 4.const枚举
      • 5.总结

        1.概述

        所谓的枚举类型就是为一组数值赋予名字。

        enum类型在C++、Java语言中比较常见,TypeScriptJavaScript原有的类型基础上也增加了enum类型。

        比如我们需要定义一组角色,需要使用数字表示,就可以使用如下代码定位:

        enum role{ STUDENT, TEACHER, ADMIN }

        上面代码中我们定义了role为一个枚举类型,这个里面有是三个值,TypeScript会为每个值自动的分配序号,默认从0开始依次排列,它们的值依次为0 1 2。

        当然我们也可以自定义每个值,如果非全部定义则后面的值会根据前面的值自增。

        示例代码如下:

        enum role1 { student = 1, // 后面两个值依次为2 3 teacher, admin, } enum role2 { // 每个名具有指定的值 student = 1, teacher = 3, admin = 6, }

        2.数字枚举

        我们上面介绍的例子就是数字枚举类型,但是还有一个注意点就是如果某个字段使用了常量或者计算后的值 ,我们就必须设置紧跟着字段的初始值 ,否则将会抛出异常。

        示例代码如下:

        ;(function () { // 定义一个函数 const getValue: () => number = (): number => { return 0 } enum role1 { student = getValue(), // teacher, // error 枚举成员必须具有初始化表达式。 // admin, // error 枚举成员必须具有初始化表达式。 } const TEACHER_ROLE: number = 3 // 每个名具有指定的值 enum role2 { student, teacher = TEACHER_ROLE, // admin, // error 枚举成员必须具有初始化表达式。 } })()

        2.1反向映射

        所谓的反向映射就是可以通过key访问到value,通过value访问到key。

        我们可以通过.名称或者['名称']的方式取到每个具体的值,也可以通过[数值]的方式取到每个数值对应的名称,

        示例代码如下:

        enum role { student, teacher, admin, } console.log(role.admin) // 2 console.log(role['teacher']) //1 console.log(role[0]) //‘student'

        其实TypeScript中的枚举类型编译成JavaScript代码之后就是一个对象,我们将上面那个枚举类型编译一下,

        编译后的代码如下:

        "use strict"; var role; (function (role) { role[role["student"] = 0] = "student"; role[role["teacher"] = 1] = "teacher"; role[role["admin"] = 2] = "admin"; })(role || (role = {}));

        这样看我们可能好理解,其实就是通过一个自调函数将值赋值给role对象,赋值之后如下:

        var role = { "student": 0, "teacher": 1, "admin" : 2, 0: "student", 1: "teacher", 2: "admin", }

        值得注意的是 反向映射仅仅支持在数字枚举 中,不支持在2.4版本中新增的字符串枚举 中。

        3.字符串枚举

        所谓的字符串枚举就是枚举中的每个字段的值必须都是字符串,或者是枚举中的其他字段,

        示例代码如下:

        enum Person { name = '一碗周', hobby = 'coding', // 设置枚举中的字段作为值 myName = name, } console.log(Person.name, Person.myName) // 一碗周 一碗周

        4.const枚举

        在我们定义了普通枚举之后,被编译成JavaScript代码之后会创建一个对应的对象,如果使用枚举是增了增加程序的可读性,且并不需要编译之后的对象。在TypeScript1.4中增加了const枚举。

        const枚举被翻译为完全嵌入枚举 ,所谓的完全嵌入枚举就是编译之后没有对应的对象,只是从枚举中拿到对应你的值然后进行替换。定义const枚举只需要在普通枚举前面加上const关键字。

        示例代码如下:

        const enum role { student, teacher, admin, } let admin = role.admin

        如上代码会被编译为如下:

        let admin = 2 /* admin */;

        5.总结

        这篇文章介绍了两种基本的枚举类型:数字枚举 和字符串枚举 ,数组枚举还有一个反射映射的概念,就是可以通过key访问value,通过value可以访问key;最后我们还介绍了const枚举,就是编译后不生成所谓的枚举对象。

        到此这篇关于TypeScript枚举类型的文章就介绍到这了,更多相关TypeScript枚举 内容请搜索自由互联以前的文章或继续浏览下面的相关文章希望大家以后多多支持自由互联!

        本文共计1577个文字,预计阅读时间需要7分钟。

        TypeScript中的枚举类型是什么?

        目录

        1.概述

        2.数字枚举

        2.1 反向映射

        3.字符串枚举

        TypeScript中的枚举类型是什么?

        4.const 枚举

        5.总结

        1.概述

        枚举类型是一组命名的整型常量,用于表示一组相关的数值。它们在编程中常用于定义一组预定义的值,如状态码、颜色、星期等。

        2.数字枚举

        数字枚举是默认的枚举类型,其中枚举成员自动被赋予从0开始的整数值。

        2.1 反向映射

        可以通过映射功能将枚举值与其名称关联,方便在代码中进行查找。

        3.字符串枚举

        字符串枚举允许枚举成员具有字符串值,而不是数字值。

        4.const 枚举

        const 枚举是 TypeScript 中的一个特性,它使得枚举成员的值在编译时就是常量,而不是运行时变量。

        5.总结

        所谓的枚举类型就是一组具有命名的数值类型。在 C++、Java 和 TypeScript 等语言中,枚举类型是一种常见的特性,而在 JavaScript 中则通过类来实现类似的功能。

        目录
        • 1.概述
        • 2.数字枚举
          • 2.1反向映射
        • 3.字符串枚举
          • 4.const枚举
            • 5.总结

              1.概述

              所谓的枚举类型就是为一组数值赋予名字。

              enum类型在C++、Java语言中比较常见,TypeScriptJavaScript原有的类型基础上也增加了enum类型。

              比如我们需要定义一组角色,需要使用数字表示,就可以使用如下代码定位:

              enum role{ STUDENT, TEACHER, ADMIN }

              上面代码中我们定义了role为一个枚举类型,这个里面有是三个值,TypeScript会为每个值自动的分配序号,默认从0开始依次排列,它们的值依次为0 1 2。

              当然我们也可以自定义每个值,如果非全部定义则后面的值会根据前面的值自增。

              示例代码如下:

              enum role1 { student = 1, // 后面两个值依次为2 3 teacher, admin, } enum role2 { // 每个名具有指定的值 student = 1, teacher = 3, admin = 6, }

              2.数字枚举

              我们上面介绍的例子就是数字枚举类型,但是还有一个注意点就是如果某个字段使用了常量或者计算后的值 ,我们就必须设置紧跟着字段的初始值 ,否则将会抛出异常。

              示例代码如下:

              ;(function () { // 定义一个函数 const getValue: () => number = (): number => { return 0 } enum role1 { student = getValue(), // teacher, // error 枚举成员必须具有初始化表达式。 // admin, // error 枚举成员必须具有初始化表达式。 } const TEACHER_ROLE: number = 3 // 每个名具有指定的值 enum role2 { student, teacher = TEACHER_ROLE, // admin, // error 枚举成员必须具有初始化表达式。 } })()

              2.1反向映射

              所谓的反向映射就是可以通过key访问到value,通过value访问到key。

              我们可以通过.名称或者['名称']的方式取到每个具体的值,也可以通过[数值]的方式取到每个数值对应的名称,

              示例代码如下:

              enum role { student, teacher, admin, } console.log(role.admin) // 2 console.log(role['teacher']) //1 console.log(role[0]) //‘student'

              其实TypeScript中的枚举类型编译成JavaScript代码之后就是一个对象,我们将上面那个枚举类型编译一下,

              编译后的代码如下:

              "use strict"; var role; (function (role) { role[role["student"] = 0] = "student"; role[role["teacher"] = 1] = "teacher"; role[role["admin"] = 2] = "admin"; })(role || (role = {}));

              这样看我们可能好理解,其实就是通过一个自调函数将值赋值给role对象,赋值之后如下:

              var role = { "student": 0, "teacher": 1, "admin" : 2, 0: "student", 1: "teacher", 2: "admin", }

              值得注意的是 反向映射仅仅支持在数字枚举 中,不支持在2.4版本中新增的字符串枚举 中。

              3.字符串枚举

              所谓的字符串枚举就是枚举中的每个字段的值必须都是字符串,或者是枚举中的其他字段,

              示例代码如下:

              enum Person { name = '一碗周', hobby = 'coding', // 设置枚举中的字段作为值 myName = name, } console.log(Person.name, Person.myName) // 一碗周 一碗周

              4.const枚举

              在我们定义了普通枚举之后,被编译成JavaScript代码之后会创建一个对应的对象,如果使用枚举是增了增加程序的可读性,且并不需要编译之后的对象。在TypeScript1.4中增加了const枚举。

              const枚举被翻译为完全嵌入枚举 ,所谓的完全嵌入枚举就是编译之后没有对应的对象,只是从枚举中拿到对应你的值然后进行替换。定义const枚举只需要在普通枚举前面加上const关键字。

              示例代码如下:

              const enum role { student, teacher, admin, } let admin = role.admin

              如上代码会被编译为如下:

              let admin = 2 /* admin */;

              5.总结

              这篇文章介绍了两种基本的枚举类型:数字枚举 和字符串枚举 ,数组枚举还有一个反射映射的概念,就是可以通过key访问value,通过value可以访问key;最后我们还介绍了const枚举,就是编译后不生成所谓的枚举对象。

              到此这篇关于TypeScript枚举类型的文章就介绍到这了,更多相关TypeScript枚举 内容请搜索自由互联以前的文章或继续浏览下面的相关文章希望大家以后多多支持自由互联!