具有显式值的枚举
默认情况下,所有 enum
值都将解析为数字。假设你有类似的东西
enum MimeType {
JPEG,
PNG,
PDF
}
例如 MimeType.PDF
背后的真正价值将是 2
。
但有些时候将枚举解析为不同的类型很重要。例如,你从后端/前端/另一个系统收到值,这绝对是一个字符串。这可能是一种痛苦,但幸运的是有这种方法:
enum MimeType {
JPEG = <any>'image/jpeg',
PNG = <any>'image/png',
PDF = <any>'application/pdf'
}
这解决了 MimeType.PDF
到 application/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 = {}));