具有显式值的枚举

默认情况下,所有 enum 值都将解析为数字。假设你有类似的东西

enum MimeType {
  JPEG,
  PNG,
  PDF
}

例如 MimeType.PDF 背后的真正价值将是 2

但有些时候将枚举解析为不同的类型很重要。例如,你从后端/前端/另一个系统收到值,这绝对是一个字符串。这可能是一种痛苦,但幸运的是有这种方法:

enum MimeType {
  JPEG = <any>'image/jpeg',
  PNG = <any>'image/png',
  PDF = <any>'application/pdf'
}

这解决了 MimeType.PDFapplication/pdf

从 TypeScript 2.4 开始,可以声明字符串枚举

enum MimeType {
  JPEG = 'image/jpeg',
  PNG = 'image/png',
  PDF = 'application/pdf',
}

你可以使用相同的方法显式提供数值

enum MyType {
   Value = 3,
   ValueEx = 30,
   ValueEx2 = 300
}

例如,Fancier 类型也可以工作,因为非 const 枚举在运行时是真实对象

enum FancyType {
   OneArr = <any>[1],
   TwoArr = <any>[2, 2],
   ThreeArr = <any>[3, 3, 3]
}

var FancyType;
(function (FancyType) {
    FancyType[FancyType["OneArr"] = [1]] = "OneArr";
    FancyType[FancyType["TwoArr"] = [2, 2]] = "TwoArr";
    FancyType[FancyType["ThreeArr"] = [3, 3, 3]] = "ThreeArr";
})(FancyType || (FancyType = {}));