Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 30c828f

Browse files
committed
-手动赋值的枚举项只能为数字 +手动赋值的枚举项可以不是数字
1 parent 6f3f1d1 commit 30c828f

File tree

1 file changed

+15
-4
lines changed

1 file changed

+15
-4
lines changed

advanced/enum.md

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -84,15 +84,26 @@ var Days;
8484

8585
所以使用的时候需要注意,最好不要出现这种覆盖的情况。
8686

87-
手动赋值的枚举项只能为数字,任何其他类型都是不被允许的
87+
手动赋值的枚举项可以不是数字,此时需要使用类型断言来让tsc无视类型检查 (编译出的js仍然是可用的)
8888

8989
```ts
90-
enum Days {Sun = 7, Mon, Tue, Wed, Thu, Fri, Sat = "S"};
90+
enum Days {Sun = 7, Mon, Tue, Wed, Thu, Fri, Sat = <any>"S"};
91+
```
9192

92-
// index.ts(1,52): error TS2322: Type 'string' is not assignable to type 'Days'.
93+
```js
94+
var Days;
95+
(function (Days) {
96+
Days[Days["Sun"] = 7] = "Sun";
97+
Days[Days["Mon"] = 8] = "Mon";
98+
Days[Days["Tue"] = 9] = "Tue";
99+
Days[Days["Wed"] = 10] = "Wed";
100+
Days[Days["Thu"] = 11] = "Thu";
101+
Days[Days["Fri"] = 12] = "Fri";
102+
Days[Days["Sat"] = "S"] = "Sat";
103+
})(Days || (Days = {}));
93104
```
94105

95-
当然,手动赋值的枚举项也可以为小数或负数,此时后续未手动赋值的项的递增步长任为 `1`
106+
当然,手动赋值的枚举项也可以为小数或负数,此时后续未手动赋值的项的递增步长仍为 `1`
96107

97108
```ts
98109
enum Days {Sun = 7, Mon = 1.5, Tue, Wed, Thu, Fri, Sat};

0 commit comments

Comments
 (0)