上集我们介绍到 Enum
基础用法,今天将来讲解其它用法。
字串 enum
其实和它字面上的意思一样,简单来说就是以字串来赋值。
enum Direction {
Up = "UP",
Down = "DOWN",
Left = "LEFT",
Right = "RIGHT",
}
console.log(Direction["Up"]) // UP
console.log(Direction["UP"]) // 喷错
要注意的有两点:
enum Direction {
Up = "UP",
Down = "DOWN",
Left = "LEFT",
Right = "RIGHT",
Cy
}
enum
没有反向映射。温馨小提醒:如果两个元素拥有相同的值,TypeScript 是不会喷错的。
有时候同一个 enum
里面,可能需要不只是一种 type
,这样是可行的吗? 答案是肯定的,所以这里我们要来介绍 Heterogeneous enum
,这就是复合式的 enum
。
enum Somethings {
Cy = "engineer",
Age = 28,
gender,
}
console.log(Somethings["Cy"]) // engineer
console.log(Somethings[28]) // Age
console.log(Somethings["gender"]) // 29
温馨小提醒:虽然可以这样,但我们可以思考一下为什麽官方会建议慎用。
接下来,如果我们希望元素都可以是常数,我们可以使用 const enum
,看到名字大概可以猜得出来,我们是要用 const
来定义。
常数列举和普通列举不一样的地方:
const enum Fruit {
Apple = 0,
Banana = 1,
Orange = 2,
Grape = 3
}
let fruit = [
Fruit.Apple,
Fruit.Banana,
Fruit.Orange,
Fruit.Grape
];
编译後
var snacks = [
0 /* Apple */,
1 /* Banana */,
2 /* Orange */,
3 /* Other */
];
enum Fruit {
Apple = 0,
Banana = 1,
Orange = 2,
Grape = 3
}
let fruit = [
Fruit.Apple,
Fruit.Banana,
Fruit.Orange,
Fruit.Grape
];
编译後
var Fruit;
(function (Fruit) {
Fruit[Fruit["Apple"] = 0] = "Apple";
Fruit[Fruit["Banana"] = 1] = "Banana";
Fruit[Fruit["Orange"] = 2] = "Orange";
Fruit[Fruit["Grape"] = 3] = "Grape";
})(Fruit || (Fruit = {}));
var fruit = [
Fruit.Apple,
Fruit.Banana,
Fruit.Orange,
Fruit.Grape
];
有什麽差异呢?
外部列举是使用 declare enum
来定义。
declare enum Directions {
Up,
Down,
Left,
Right
}
let directions = [Directions.Up, Directions.Down, Directions.Left, Directions.Right];
经过编译後,会消失。
var directions = [Directions.Up, Directions.Down, Directions.Left, Directions.Right];
这两天和大家一起来认识了 enum
,不知道大家有想要开始使用 enum
来让自己的程序码更加坚固安全了吗?
明天将和大家一起来看 明文型别 (Literal Types)。
>>: Day27 - 在 Kubernetes Ingress 挂上 Google SSL 凭证
不知道大家有没有经历过网站卡卡的情况,尤其是抢车票或抢预约疫苗的时候,网站总是因为流量大,而瞬间卡住...
写在前面 placeholder for test day 18 placeholder for t...
本系列文之後也会置於个人网站 +-------------------+ | Authz Serv...
ScriptTagHelper (脚本标签帮助程序):是针对HTML原生<script> tag的...
函式 (Function) 函式也称做函数。 函式可以将一行或多行程序码指令包装起来,当我需要使用这...