TypeScript与JavaScript不同之处系列 ===;枚举

Posted 刘翾

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TypeScript与JavaScript不同之处系列 ===;枚举相关的知识,希望对你有一定的参考价值。

本系列目的: 列出TypeScript与javascript的不同点, 缩小文档内容, 提高学习速度. 原文档地址: https://www.tslang.cn/index.html

全系列目录

文章目录

1. 枚举

1.1. 简单使用

enum Direction  a = 3, b, c, d // 手动赋值,  b c d的值分别为4, 5, 6
enum Direction  a, b, c, d // 默认赋值, a b c d的值分别为1, 2, 3, 4

// 使用枚举
enum Response 
    No = 0,
    Yes = 1,


function respond(recipient: string, message: Response): void 
    // ...


respond("Princess Caroline", Response.Yes)

1.2. 字符串枚举

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

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

1.3. 常量枚举

常量枚举只能使用常量枚举表达式,并且不同于常规的枚举,它们在编译阶段会被删除。 常量枚举成员在使用的地方会被内联进来。 之所以可以这么做是因为,常量枚举不允许包含计算成员。

const enum Directions 
    Up,
    Down,
    Left,
    Right


let directions = [Directions.Up, Directions.Down, Directions.Left, Directions.Right]


// 编译后的的代码为: 可以看到enum没有了

var directions = [0 /* Up */, 1 /* Down */, 2 /* Left */, 3 /* Right */];

1.4. 异构枚举

就是字符串和数字的混合, 官方不建议这么使用

enum BooleanLikeHeterogeneousEnum 
    No = 0,
    Yes = "YES",

1.5. 反向映射

enum Enum 
    A

let a = Enum.A;
let nameOfA = Enum[a]; // "A"

以上是关于TypeScript与JavaScript不同之处系列 ===;枚举的主要内容,如果未能解决你的问题,请参考以下文章

TypeScript与JavaScript不同之处系列 ===; 类

TypeScript与JavaScript不同之处系列 ===; 函数

TypeScript与JavaScript不同之处系列 ===; 泛型

TypeScript与JavaScript不同之处系列 ===;枚举

TypeScript与JavaScript不同之处系列 ===; 命名空间, 三斜线指令

javaScript学习笔记(与c++等不同之处)