TypeScript基础入门 - 枚举 - 数字枚举和字符串枚举

转载node

TypeScript基础入门 - 枚举 - 数字枚举和字符串枚举

项目实践仓库git

https://github.com/durban89/typescript_demo.git
tag: 1.3.5

为了保证后面的学习演示须要安装下ts-node,这样后面的每一个操做都能直接运行看到输出的结果。github

npm install -D ts-node

后面本身在练习的时候能够这样使用typescript

npx ts-node 脚本路径

枚举

枚举

使用枚举咱们能够定义一些带名字的常量。 使用枚举能够清晰地表达意图或建立一组有区别的用例。 TypeScript支持数字的和基于字符串的枚举。npm

数字枚举

首先咱们看看数字枚举,若是你使用过其它编程语言应该会很熟悉。编程

enum Derection {
    Up = 1,
    Down,
    Left,
    Right
}


如上,咱们定义了一个数字枚举, Up使用初始化为 1。 其他的成员会从 1开始自动增加。 换句话说, Direction.Up的值为 1, Down为 2, Left为 3, Right为 4。编程语言

咱们还能够彻底不使用初始化器,以下学习

enum Derection {
    Up,
    Down,
    Left,
    Right
}


如今, Up的值为 0, Down的值为 1等等。 当咱们不在意成员的值的时候,这种自增加的行为是颇有用处的,可是要注意每一个枚举成员的值都是不一样的。
使用枚举很简单:经过枚举的属性来访问枚举成员,和枚举的名字来访问枚举类型,以下示例spa

enum ResponseOther {
    No = 0,
    Yes = 1,
}

function respond(re: string, me: ResponseOther) {
    // other doing
}

respond("message", ResponseOther.No)


数字枚举能够被混入到 计算过的和常量成员(以下所示)。 简短地说,不带初始化器的枚举或者被放在第一的位置,或者被放在使用了数字常量或其它常量初始化了的枚举后面。 换句话说,下面的状况是不被容许的:调试

enum E {
    A = getSomeValue(),
    B, // error! 'A' is not constant-initialized, so 'B' needs an initializer
}

字符串枚举

字符串枚举的概念很简单,可是有细微的 运行时的差异。 在一个字符串枚举里,每一个成员都必须用字符串字面量,或另一个字符串枚举成员进行初始化。

enum Direction {
    Up = "UP",
    Down = "DOWN",
    Left = "LEFT",
    Right = "RIGHT",
}


因为字符串枚举没有自增加的行为,字符串枚举能够很好的序列化。 换句话说,若是你正在调试而且必需要读一个数字枚举的运行时的值,这个值一般是很难读的 - 它并不能表达有用的信息(尽管 反向映射会有所帮助),字符串枚举容许你提供一个运行时有意义的而且可读的值,独立于枚举成员的名字。

本实例结束实践项目地址

https://github.com/durban89/typescript_demo.git
tag: 1.3.6
相关文章
相关标签/搜索