具有顯式值的列舉

預設情況下,所有 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 = {}));