TS学习笔记(六):枚举

作者: 半掩时光 | 来源:发表于2019-05-11 23:33 被阅读0次

枚举是组织收集有关联变量的一种方式,使用枚举我们可以定义一些带名字的常量,像 C# 和 Java 都有枚举数据类型,TypeScript 将枚举类型引进到了 JavaScript 中。

数字枚举

枚举类型的值是数字类型,因此它们被称为数字类型枚举,成员的值可以不用初始化,因为具有自增行为。

// 默认自增
enum Person {
  name,
  age,
  love,
  hobby
}
console.log(Person.name); // 0
console.log(Person.hobby); // 3

// 可人为自行修改
enum Person {
  name = 4,
  age = 3,
  love = 2,
  hobby = 1
}
console.log(Person.name); // 4
console.log(Person.hobby); // 1

数字枚举的反向映射

数字枚举成员还具有 反向映射 的特性,从枚举值到枚举名字,要注意的是 不会为字符串枚举成员生成反向映射。

enum Person {
  name,
  age,
  love,
  hobby
}
console.log(Person[Person.love]); // love

字符串枚举

在一个字符串枚举里,每个成员都必须用字符串字面量,或另外一个字符串枚举成员进行初始化。

enum Person {
  name = 'NAME',
  age = 'AGE',
  love = 'LOVE',
  hobby = 'HOBBY'
}
console.log(Person.name); // NAME
console.log(Person.hobby); // HOBBY

异构枚举

枚举可以混合字符串和数字成员,但一般没必要这么做。

enum Person {
  name = 1,
  age = 2,
  love = 'LOVE',
  hobby = 'HOBBY'
}
console.log(Person.name); // 1
console.log(Person.hobby); // HOBBY

常量枚举

常量枚举通过在枚举上使用 const 修饰符来定义,常量枚举不同于常规的枚举,他们会在编译阶段被删除。

const enum Size {
  WIDTH = 10,
  HEIGHT = 20
}
const area = Size.WIDTH * Size.HEIGHT; // 200

常量枚举成员在使用的地方会被内联进来,之所以可以这么做是因为,常量枚举不允许包含计算成员;如上例所示,在运行时是没有 Size 变量的,因此常量枚举会带来一个对性能的提升。

other

相关文章

  • TS学习笔记(六):枚举

    枚举是组织收集有关联变量的一种方式,使用枚举我们可以定义一些带名字的常量,像 C# 和 Java 都有枚举数据类型...

  • TS学习笔记(6)-枚举类型

    枚举类型 ========= 知识点 枚举类型的定义方法 枚举类型的使用方法 代码

  • Typescript

    TypeScript(TS)部分 TypeScript学习笔记

  • TS 笔记四 枚举enum

    参考https://github.com/zhongsp/TypeScript[https://github.co...

  • kotlin 枚举类Enum

    枚举类,代数类型学习笔记###

  • TypeScript10(枚举类型)

    在javaScript中是没有枚举的概念TS帮我们定义了枚举这个类型 使用枚举 通过enum关键字定义我们的枚举 ...

  • ts 枚举类型

    ts 枚举类型 常用于数据的映射 默认枚举默认的情况下,默认的情况下第一项索引是 '1',逐渐递增,可正反映射 赋...

  • #typescript# 在.d.ts文件中声明enum

    今天遇到一个报错,在xxx.d.ts中声明了一个枚举,如下所示 在yyy.ts中使用这个枚举,如下所示 编译后运行...

  • 2019-10-16

    https://ts.xcatliu.com/introduction/get-typescript 学习笔记 入...

  • 枚举

    使用枚举可以定义一些带名字的常量,TS支持数字的和基于字符串的枚举使用:通过枚举的属性来访问枚举成员,通过枚举的名...

网友评论

    本文标题:TS学习笔记(六):枚举

    本文链接:https://www.haomeiwen.com/subject/ezqqaqtx.html