Skip to content

Commit e5af23f

Browse files
committed
Review Enums
1 parent b5f606f commit e5af23f

File tree

1 file changed

+20
-21
lines changed

1 file changed

+20
-21
lines changed

doc/handbook/Enums.md

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# 枚举
22

33
使用枚举我们可以定义一些有名字的数字常量。
4-
枚举通过使用`enum`关键字定义
4+
枚举通过`enum`关键字来定义
55

66
```ts
77
enum Direction {
@@ -13,26 +13,25 @@ enum Direction {
1313
```
1414

1515
一个枚举类型可以包含零个或多个枚举成员。
16-
枚举成员具有一个数字值,它们可以是*常数**通过计算得出的值*
17-
当满足如下条件时,枚举成员被当成是常数
16+
枚举成员具有一个数字值,它可以是*常数*或是*计算得出的值*
17+
当满足如下条件时,枚举成员被当作是常数
1818

19-
* 不具有初始化函数并且前面的枚举成员是常数
19+
* 不具有初始化函数并且之前的枚举成员是常数
2020
在这种情况下,当前枚举成员的值为上一个枚举成员的值加1。
21-
一个例外情况就是枚举的第一个元素
21+
但第一个枚举元素是个例外
2222
如果它没有初始化方法,那么它的初始值为`0`
23-
* 枚举成员使用常数枚举表达式初始化
24-
常数枚举表达式是TypeScript表达式的子集,完全可以在编译阶段求值
23+
* 枚举成员使用*常数枚举表达式*初始化
24+
常数枚举表达式是TypeScript表达式的子集,它可以在编译阶段求值
2525
当一个表达式满足下面条件之一时,它就是一个常数枚举表达式:
2626
* 数字字面量
27-
* 引用前面定义的常数枚举成员(可以是在不同的枚举类型中定义的)
28-
如果这个成员是在同一个枚举类型中定义的,可以使用非限定名引用。
29-
* parenthesized constant enum expression
27+
* 引用之前定义的常数枚举成员(可以是在不同的枚举类型中定义的)
28+
如果这个成员是在同一个枚举类型中定义的,可以使用非限定名来引用。
3029
* 带括号的常数枚举表达式
31-
* `+`, `-`, `~` 一元运算符应用到常数枚举表达式
32-
* `+`, `-`, `*`, `/`, `%`, `<<`, `>>`, `>>>`, `&`, `|`, `^` 二元运算符,常数枚举表达式做为一个操作对象
33-
若常数枚举表达式求值后为`NaN``Infinity`会在编译阶段报错
30+
* `+`, `-`, `~` 一元运算符应用于常数枚举表达式
31+
* `+`, `-`, `*`, `/`, `%`, `<<`, `>>`, `>>>`, `&`, `|`, `^` 二元运算符,常数枚举表达式做为其一个操作对象
32+
若常数枚举表达式求值后为`NaN``Infinity`则会在编译阶段报错
3433

35-
所有其它情况的枚举成员被当成需要计算的
34+
所有其它情况的枚举成员被当作是需要计算得出的值
3635

3736
```ts
3837
enum FileAccess {
@@ -46,8 +45,8 @@ enum FileAccess {
4645
}
4746
```
4847

49-
枚举是在运行时真正存在的对象
50-
其中一个原因是可以从枚举值到枚举名进行反射映射
48+
枚举是在运行时真正存在的一个对象
49+
其中一个原因是因为这样可以从枚举值到枚举名进行反向映射
5150

5251
```ts
5352
enum Enum {
@@ -68,9 +67,9 @@ var a = Enum.A;
6867
var nameOfA = Enum[Enum.A]; // "A"
6968
```
7069

71-
生成的代码中,枚举类型被编译成一个对象,它包含双向的映射`name` -> `value`)和(`value` -> `name`)。
72-
引用枚举成员总会生成一个属性访问并且永远不会内联
73-
在大多数情况下这是很完美并正确的解决方案
70+
生成的代码中,枚举类型被编译成一个对象,它包含双向映射`name` -> `value`)和(`value` -> `name`)。
71+
引用枚举成员总会生成一次属性访问并且永远不会内联
72+
在大多数情况下这是很好的并且正确的解决方案
7473
然而有时候需求却比较严格。
7574
当访问枚举值时,为了避免生成多余的代码和间接引用,可以使用常数枚举。
7675
常数枚举是在`enum`关键字前使用`const`修饰符。
@@ -82,8 +81,8 @@ const enum Enum {
8281
}
8382
```
8483

85-
常数枚举只能使用常数枚举表达式并且不同于常规的枚举,它们在编译阶段会被删除
86-
常数枚举成员在使用的地方被内联起来
84+
常数枚举只能使用常数枚举表达式并且不同于常规的枚举的是它们在编译阶段会被删除
85+
常数枚举成员在使用的地方被内联进来
8786
这是因为常数枚举不可能有计算成员。
8887

8988
```ts

0 commit comments

Comments
 (0)