一、定义 enum

使用枚举我们可以定义一些有名字的数字常量。枚举通过enum关键字定义。

枚举的定义和C#中有些类似。

enum Direction{
    Up=1,
    Down,
    Left,
    Right
}
console.info(Direction);
console.info(Direction.Down);//获取枚举的值
console.info(Direction[2]); //获取枚举值对应的名称定义



枚举结构输出结果

typescript中的privite typescript中的枚举_TypeScript 枚举使用整理

TypeScript 中Enum定义的详细说明(转子TypeScript中文官网):

一个枚举类型可以包含零个或多个枚举成员。 枚举成员具有一个数字值,它可以是 常数或是计算得出的值 当满足如下条件时,枚举成员被当作是常数:

  • 不具有初始化函数并且之前的枚举成员是常数。 在这种情况下,当前枚举成员的值为上一个枚举成员的值加1。 但第一个枚举元素是个例外。 如果它没有初始化方法,那么它的初始值为 0。
  • 枚举成员使用常数枚举表达式初始化。 常数枚举表达式是TypeScript表达式的子集,它可以在编译阶段求值。 当一个表达式满足下面条件之一时,它就是一个常数枚举表达式:
  • 数字字面量
  • 引用之前定义的常数枚举成员(可以是在不同的枚举类型中定义的) 如果这个成员是在同一个枚举类型中定义的,可以使用非限定名来引用。
  • 带括号的常数枚举表达式
  • +, -, ~
  • +, -, *, /, %, <<, >>, >>>, &, |, ^ 二元运算符,常数枚举表达式做为其一个操作对象 若常数枚举表达式求值后为 NaN或Infinity,则会在编译阶段报错。

二、常数枚举 const枚举类型被编译成一个对象,它包含双向映射(

name ->  value)和( value ->  name)。

常数枚举是在enum关键字前使用const修饰符。

常数枚举只能使用常数枚举表达式并且不同于常规的枚举的是它们在编译阶段会被删除。 

常数枚举成员在使用的地方被内联进来。 这是因为常数枚举不可能有计算成员。

const enum Directions {
    Up,
    Down,
    Left,
    Right
}

三、外部枚举 declare

外部枚举用来描述已经存在的枚举类型的形状。

外部枚举和非外部枚举之间有一个重要的区别,在正常的枚举里,没有初始化方法的成员被当成常数成员。 对于非常数的外部枚举而言,没有初始化方法时被当做需要经过计算的。

declare enum Enum {
    A = 1,
    B,
    C = 2
}

更多:

TypeScript 泛型<T>使用整理

TypeScript 函数使用整理

TypeScript 类使用整理