ts枚举
数字枚举 enum Color { Red, // 0 Blue, // 1 Green, // 2 } let c1:Color = Color.Blue let c2:
ts枚举
发布时间:2023-10-12 (2023-10-12)

数字枚举

enum Color {
    Red, // 0
    Blue, // 1
    Green, // 2
}

let c1:Color = Color.Blue
let c2:Color = 5  // 编译会失败
let c3:Color = "234" // 直接失败

如果是纯数字,下面的会进行自动增长

自动从0开始

enum Color {
    Red=100,
    Blue, // 101
    Green, // 102
    Yellow, // 103
}

如果中断了,那么下面的就从中断的地方继续增长

enum Color {
    Red=100,
    Blue, // 101
    Green=103, // 103
    Yellow, // 104
}

字符串枚举

它不能自动增长

enum Color {
    Red="red",
    Blue, // 报错
}

如果是字符串,那么定义的时候就要全部写上

enum Color {
    Red="red",
    Blue="blue",
}

接口枚举

enum Color {
    Red,
    Blue,
    Yellow
}

interface ColorInter {
    color: Color,
    blue: Color.Blue
}


let c1: ColorInter = {
    color: Color.Red, // 这个color只能是Color里面的值
    blue: Color.Blue, // blue就只能写 Color.Blue
}

const枚举

主要作用就是节省因为枚举带来的性能消耗

enum Color {
    Red = 2,
    Blue,
    Yellow
}

interface ColorInter {
    color: Color,
    blue: Color.Blue
}


let c1: ColorInter = {
    color: Color.Red, // 这个color只能是Color里面的值
    blue: Color.Blue, // blue就只能写 Color.Blue
}

编译之后

var Color;
(function (Color) {
    Color[Color["Red"] = 2] = "Red";
    Color[Color["Blue"] = 3] = "Blue";
    Color[Color["Yellow"] = 4] = "Yellow";
})(Color || (Color = {}));
var c1 = {
    color: Color.Red,
    blue: Color.Blue, // blue就只能写 Color.Blue
};
const enum Color {
    Red = 2,
    Blue,
    Yellow
}

interface ColorInter {
    color: Color,
    blue: Color.Blue
}


let c1: ColorInter = {
    color: Color.Red, // 这个color只能是Color里面的值
    blue: Color.Blue, // blue就只能写 Color.Blue
}

编译之后

var c1 = {
    color: 2 /* Color.Red */,
    blue: 3 /* Color.Blue */, // blue就只能写 Color.Blue
};