1
1
# μ΄κ±°ν (Enums)
2
2
3
- μ΄κ±°νμ μ¬μ©νλ©΄ μ΄λ¦μ΄ μλ μμλ€μ μ μν μ μμ΅λλ€.
4
- μ΄κ±°νμ μ¬μ©μ λ¬Έμμ μλλ λͺ
νν μ¬λ‘λ€μ μ½κ² λ§λ€ μ μμ΅λλ€.
3
+ μ΄κ±°νμ μ¬μ©νλ©΄ μ΄λ¦μ΄ μλ μμλ€μ μ μν μ μμ΅λλ€.
4
+ μ΄κ±°νμ μ¬μ©μ λ¬Έμμ μλλ λͺ
νν μ¬λ‘λ€μ μ½κ² λ§λ€ μ μμ΅λλ€.
5
5
TypeScript λ μ«μ λ° λ¬Έμμ΄ κΈ°λ° μ΄κ±°νμ λͺ¨λ μ 곡ν©λλ€.
6
6
7
7
## μ«μ μ΄κ±°ν (Numeric enums)
8
8
9
- λ¨Όμ μ«μ μ΄κ±°νμΌλ‘ μμν©λλ€. λ€λ₯Έ μΈμ΄μμ μ΄κ±°νμ μ ν΄λ΄€λ€λ©΄ λ μ΅μ ν κ²μ
λλ€.
9
+ λ¨Όμ μ«μ μ΄κ±°νμΌλ‘ μμν©λλ€.
10
+ λ€λ₯Έ μΈμ΄μμ μ΄κ±°νμ μ ν΄λ΄€λ€λ©΄ λ μ΅μ ν κ²μ
λλ€.
10
11
μ΄κ±°νμ ` enum ` ν€μλλ₯Ό μ¬μ©νμ¬ μ μν μ μμ΅λλ€.
11
12
12
13
``` ts
@@ -18,8 +19,8 @@ enum Direction {
18
19
}
19
20
```
20
21
21
- μμμ ` Up ` λ ` 1 ` λ‘ μ΄κΈ°νλ μ«μ μ΄κ±°νμ
λλ€.
22
- μλμ μ΄μ΄μ λ±μ₯νλ λ©€λ²λ€μ μλμΌλ‘ μ¦κ°ν©λλ€.
22
+ μμμ ` Up ` λ ` 1 ` λ‘ μ΄κΈ°νλ μ«μ μ΄κ±°νμ
λλ€.
23
+ μλμ μ΄μ΄μ λ±μ₯νλ λ©€λ²λ€μ μλμΌλ‘ μ¦κ°ν©λλ€.
23
24
μ¦, ` Direction.Up ` μ ` 1 ` , ` Down ` μ ` 2 ` , ` Left ` λ ` 3 ` , ` Right ` λ ` 4 ` μ
λλ€.
24
25
25
26
μνλ€λ©΄ μ΄κΈ°νλ₯Ό μμ ν μμ¨ μλ μμ΅λλ€.
@@ -33,7 +34,7 @@ enum Direction {
33
34
}
34
35
```
35
36
36
- μ¬κΈ°μμλ ` Up ` μ ` 0 ` μ΄λ©°, ` Down ` μ ` 1 ` μ΄ λ©λλ€.
37
+ μ¬κΈ°μμλ ` Up ` μ ` 0 ` μ΄λ©°, ` Down ` μ ` 1 ` μ΄ λ©λλ€.
37
38
μ΄ μλ μ¦κ° λμμ λ©€λ²μ κ° μ체μ μ κ²½ μ°μ§ μκ³ κ° μ΄κ±°νμ΄ λμΌν μ΄κ±°νμ λ€λ₯Έ κ°κ³Ό ꡬλ³λλ κ²½μ°μ μ μ©ν©λλ€.
38
39
39
40
μ΄κ±°νμ μ¬μ©νλ κ²μ κ°λ¨ν©λλ€: μ΄κ±°ν μ체μ μμ±μΌλ‘ λͺ¨λ λ©€λ²μ μμΉμ€νκ³ , μ΄κ±°νμ μ΄λ¦μ μ¬μ©νμ¬ νμ
μ μ μΈν©λλ€.
@@ -51,8 +52,8 @@ function respond(recipient: string, message: Response): void {
51
52
respond (" Princess Caroline" , Response .Yes )
52
53
```
53
54
54
- μ«μ μ΄κ±°νμ [ κ³μ°λ, μμ λ©€λ² (computed and constant members)] ( #computed-and-constant-members ) μ νΌν© λ μ μμ΅λλ€.
55
- λ¨νΈμ μΌλ‘, μ΄κΈ°νκ° μλ μ΄κ±°νμ μμ λλ λ€λ₯Έ μμ μ΄κ±°νμ λ©€λ²λ‘ μ΄κΈ°νλ μ«μ μ΄κ±°νμ λ°λΌμΌν νμκ° μμ΅λλ€.
55
+ μ«μ μ΄κ±°νμ [ κ³μ°λ, μμ λ©€λ² (computed and constant members)] ( #computed-and-constant-members ) μ νΌν©λ μ μμ΅λλ€.
56
+ λ¨νΈμ μΌλ‘ μ΄κΈ°νκ° μλ μ΄κ±°νμ μμ λλ λ€λ₯Έ μμ μ΄κ±°νμ λ©€λ²λ‘ μ΄κΈ°νλ μ«μ μ΄κ±°νμ λ°λΌμΌν νμκ° μμ΅λλ€.
56
57
μ¦, λ€μμ νμ©λμ§ μμ΅λλ€:
57
58
58
59
``` ts
@@ -64,7 +65,7 @@ enum E {
64
65
65
66
## λ¬Έμ μ΄κ±°ν (String enums)
66
67
67
- λ¬Έμ μ΄κ±°νμ λΉμ·ν κ°λ
μ΄μ§λ§ μλμ μ€λͺ
λ κ²κ³Ό κ°μ΄ μ½κ°μ λ―Έλ¬ν [ μ€νμ μ°¨μ΄ (runtime differences)] ( #enums-at-runtime ) κ° μμ΅λλ€.
68
+ λ¬Έμ μ΄κ±°νμ λΉμ·ν κ°λ
μ΄μ§λ§ μλμ μ€λͺ
λ κ²κ³Ό κ°μ΄ μ½κ°μ λ―Έλ¬ν [ μ€νμ μ°¨μ΄ (runtime differences)] ( #enums-at-runtime ) κ° μμ΅λλ€.
68
69
λ¬Έμ μ΄κ±°νμμ κ° λ©€λ²λ λ¬Έμμ΄ λ¦¬ν°λ΄ λλ λ€λ₯Έ λ¬Έμ μ΄κ±°ν λ©€λ²λ‘ μμμ΄κΈ°νλμ΄μΌ ν©λλ€.
69
70
70
71
``` ts
@@ -76,8 +77,8 @@ enum Direction {
76
77
}
77
78
```
78
79
79
- λ¬Έμ μ΄κ±°νμ μλ μ¦κ° λμμ νμ§ μμ§λ§ λ¬Έμ μ΄κ±°νμ "μ§λ ¬ν(serialize)"νλ μ΄μ μ΄ μμ΅λλ€.
80
- μ¦, λλ²κΉ
μ€μ΄λ©° μ«μ μ΄κ±°νμ λ°νμ κ°μ μ½μ΄μΌνλ κ²½μ° μ΄ κ°μ μ’
μ’
λΆν¬λͺ
ν©λλ€ - μ¦, μ체μ μΌλ‘ μ μ©ν μλ―Έλ₯Ό μ λ¬νμ§λ μμ΅λλ€.([ μ λ§€ν (enums-at-runtime)] ( #enums-at-runtime ) μ΄ λμμ΄ λ κ²μ
λλ€)
80
+ λ¬Έμ μ΄κ±°νμ μλ μ¦κ° λμμ νμ§ μμ§λ§ λ¬Έμ μ΄κ±°νμ "μ§λ ¬ν(serialize)"νλ μ΄μ μ΄ μμ΅λλ€.
81
+ μ¦, λλ²κΉ
μ€μ΄λ©° μ«μ μ΄κ±°νμ λ°νμ κ°μ μ½μ΄μΌνλ κ²½μ° μ΄ κ°μ μ’
μ’
λΆν¬λͺ
ν©λλ€ - μ¦, μ체μ μΌλ‘ μ μ©ν μλ―Έλ₯Ό μ λ¬νμ§λ μμ΅λλ€.([ μ λ§€ν (enums-at-runtime)] ( #enums-at-runtime ) μ΄ λμμ΄ λ κ²μ
λλ€)
81
82
λ¬Έμ μ΄κ±°νμ μ¬μ©νλ©΄ μ΄κ±°ν λ©€λ² μ체μ μ΄λ¦κ³Ό λ
립μ μΌλ‘ μ½λκ° μ€νλ λ μλ―Έμκ³ μ½κΈ° μ¬μ΄ κ°μ μ 곡ν©λλ€.
82
83
83
84
## λ³μ’
μ΄κ±°ν (Heterogeneous enums)
@@ -95,7 +96,7 @@ JavaScriptμ λ°νμ λμμ μ€μ λ‘ μ¬μ©νλ €κ³ νμ§ μλ ν,
95
96
96
97
## κ³μ°λ μμ λ©€λ² (Computed and constant members)
97
98
98
- κ° μ΄κ±°ν λ©€λ²μλ * constant* λλ * computed* μ€ νλμΌ μ μλ κ°μ΄ μμ΅λλ€.
99
+ κ° μ΄κ±°ν λ©€λ²μλ * constant* λλ * computed* μ€ νλμΌ μ μλ κ°μ΄ μμ΅λλ€.
99
100
μ΄κ±°ν λ©€λ²λ λ€μκ³Ό κ°μ κ²½μ° μμλ‘ κ°μ£Όλ©λλ€:
100
101
101
102
* μ΄κ±°νμ 첫 λ²μ§Έ λ©€λ²μ΄λ©° μ΄κΈ°νκ° μμΌλ©΄ κ°μ΄ ` 0 ` μΌλ‘ μ§μ λ©λλ€:
@@ -105,7 +106,7 @@ JavaScriptμ λ°νμ λμμ μ€μ λ‘ μ¬μ©νλ €κ³ νμ§ μλ ν,
105
106
enum E { X }
106
107
```
107
108
108
- * μ΄κΈ°νκ° μκ³ μμ μ΄κ±°ν λ©€λ²κ° * μ«μ* μΈ μμμ
λλ€.
109
+ * μ΄κΈ°νκ° μκ³ μμ μ΄κ±°ν λ©€λ²κ° * μ«μ* μΈ μμμ
λλ€.
109
110
μ΄ κ²½μ° μ΄ν λμ€λ μ΄κ±°ν λ©€λ²μ κ°μ μ΄μ μ΄κ±°ν λ©€λ²μ κ°μ 1μ λν κ°μ΄ λ©λλ€.
110
111
111
112
``` ts
@@ -118,8 +119,8 @@ JavaScriptμ λ°νμ λμμ μ€μ λ‘ μ¬μ©νλ €κ³ νμ§ μλ ν,
118
119
}
119
120
```
120
121
121
- * μ΄κ±°ν λ©€λ²λ μμ μ΄κ±°ν ννμμΌλ‘ μ΄κΈ°νλ©λλ€.
122
- μμ μ΄κ±°ν ννμμ μ»΄νμΌ μκ°μ μμ ν νκ°λ μ μλ TypeScriptμ νμ μ§ν©μ
λλ€.
122
+ * μ΄κ±°ν λ©€λ²λ μμ μ΄κ±°ν ννμμΌλ‘ μ΄κΈ°νλ©λλ€.
123
+ μμ μ΄κ±°ν ννμμ μ»΄νμΌ μκ°μ μμ ν νκ°λ μ μλ TypeScriptμ νμ μ§ν©μ
λλ€.
123
124
ννμμ λ€μκ³Ό κ°μ κ²½μ° μμ μ΄κ±° ννμμ
λλ€:
124
125
1 . 리ν°λ΄ μ΄κ±° ννμ (κΈ°λ³Έμ μΌλ‘ λ¬Έμ 리ν°λ΄ λλ μ«μ 리ν°λ΄)
125
126
2 . μ΄μ μ μ μλ μμ μ΄κ±°ν λ©€λ² (λ€λ₯Έ μ΄κ±°νμμ μ¬ μ μμ)μ λν μ°Έμ‘°
@@ -144,7 +145,7 @@ enum FileAccess {
144
145
145
146
## ν΅ν© μ΄κ±°ν λ° μ΄κ±°ν λ©€λ² νμ
(Union enums and enum member types)
146
147
147
- κ³μ°λμ§ μμ μμ μ΄κ±°ν λ©€λ²μ νΉμ νμ μ§ν©μ΄ μμ΅λλ€: 리ν°λ΄ μ΄κ±°ν λ©€λ²μ
λλ€.
148
+ κ³μ°λμ§ μμ μμ μ΄κ±°ν λ©€λ²μ νΉμ νμ μ§ν©μ΄ μμ΅λλ€: 리ν°λ΄ μ΄κ±°ν λ©€λ²μ
λλ€.
148
149
리ν°λ΄ μ΄κ±°ν λ©€λ²λ μ΄κΈ°νλ κ°μ΄ μκ±°λ λ€μ κ°μΌλ‘ μ΄κΈ°ν λ κ°μ΄ μλ μμ μ΄κ±°ν λ©€λ²μ
λλ€.
149
150
150
151
* λ¬Έμμ΄ λ¦¬ν°λ΄ (μ: ` "foo" ` , ` "bar" ` , ` "baz" ` )
@@ -179,8 +180,8 @@ let c: Circle = {
179
180
}
180
181
```
181
182
182
- λ λ€λ₯Έ λ³νλ μ΄κ±° νμ
μμ²΄κ° κ° μ΄κ±°ν λ©€λ²μ * ν©μ§ν©(union)* μ΄ λλ€λ κ²μ
λλ€.
183
- [ κ²°ν© νμ
(union types)] (./Advanced Types.md#union-types)μ λν΄ μμ§ λ°°μ°μ§ μμμ§λ§, μμ λμ΄μΌ ν κ²μ μ‘°ν© μ΄κ±°νμ μ¬μ©νλ νμ
μμ€ν
μ΄ μ΄κ±°ν μ체μ μ‘΄μ¬νλ μ νν κ°λ€μ μκ³ μλ€λ μ¬μ€μ νμ©ν μ μλ€λ κ²μ
λλ€.
183
+ λ λ€λ₯Έ λ³νλ μ΄κ±° νμ
μμ²΄κ° κ° μ΄κ±°ν λ©€λ²μ * ν©μ§ν©(union)* μ΄ λλ€λ κ²μ
λλ€.
184
+ [ κ²°ν© νμ
(union types)] (./Advanced Types.md#union-types)μ λν΄ μμ§ λ°°μ°μ§ μμμ§λ§, μμ λμ΄μΌ ν κ²μ μ‘°ν© μ΄κ±°νμ μ¬μ©νλ νμ
μμ€ν
μ΄ μ΄κ±°ν μ체μ μ‘΄μ¬νλ μ νν κ°λ€μ μκ³ μλ€λ μ¬μ€μ νμ©ν μ μλ€λ κ²μ
λλ€.
184
185
μ΄ λλ¬Έμ TypeScriptλ κ°μ μλͺ» λΉκ΅νλ λ°λ³΄κ°μ λ²κ·Έλ₯Ό μ‘μ μ μμ΅λλ€.
185
186
186
187
``` ts
@@ -197,13 +198,14 @@ function f(x: E) {
197
198
}
198
199
```
199
200
200
- μ΄ μμ μμ, λ¨Όμ ` x ` κ° ` E.Foo ` κ° κ° * μλμ§* κ²μ¬νμ΅λλ€.
201
- μ΄ κ²μ¬λ₯Ό μ±κ³΅νλ©΄ ` || ` κ° μ€νλμ§ μκ³ 'if' μ λ΄λΆκ° μ€νλ©λλ€.
201
+ μ΄ μμ μμ, λ¨Όμ ` x ` κ° ` E.Foo ` κ° κ° * μλμ§* κ²μ¬νμ΅λλ€.
202
+ μ΄ κ²μ¬λ₯Ό μ±κ³΅νλ©΄ ` || ` κ° μ€νλμ§ μκ³ 'if' μ λ΄λΆκ° μ€νλ©λλ€.
202
203
νμ§λ§ κ²μ¬λ₯Ό μ±κ³΅νμ§ λͺ»νλ©΄ ` x ` λ * μ€μ§* ` E.Foo ` λ§ λ μ μμ΅λλ€. λ°λΌμ ` E.Bar ` μ λμΌν μ§ νμΈνλ κ²μ μλ―Έκ° μμ΅λλ€.
203
204
204
205
## λ°νμμμ μ΄κ±°ν (Enums at runtime)
205
206
206
207
μ΄κ±°νμ λ°νμμ μ‘΄μ¬νλ μ€μ κ°μ²΄μ
λλ€.
208
+
207
209
μλ₯Ό λ€μ΄ λ€μ μ΄κ±°νμ 보면,
208
210
209
211
``` ts
@@ -226,6 +228,7 @@ f(E);
226
228
### μ λ§€ν (Reverse mappings)
227
229
228
230
λ©€λ²μ λν μμ± μ΄λ¦μ΄ μλ κ°μ²΄λ₯Ό λ§λλ κ² μΈμλ μ«μ μ΄κ±°ν λ©€λ²λ μ΄κ±°ν κ°μμ μ΄κ±°νμ μ΄λ¦μΌλ‘ * μ λ§€ν(reverse mapping)* μ λ°μ΅λλ€.
231
+
229
232
μλ₯Ό λ€μ΄, λ€μ μμ μμ:
230
233
231
234
``` ts
@@ -247,16 +250,16 @@ var a = Enum.A;
247
250
var nameOfA = Enum[a]; // "A"
248
251
```
249
252
250
- μ΄ μμ±λ μ½λμμ μ΄κ±°νμ μ λ°©ν₯(forward) (` name ` -> ` value ` ) λ§€νκ³Ό μλ°©ν₯(reverse) (` value ` -> ` name ` ) λ§€νμ λͺ¨λ μ μ₯νλ κ°μ²΄λ‘ μ»΄νμΌλ©λλ€.
253
+ μ΄ μμ±λ μ½λμμ μ΄κ±°νμ μ λ°©ν₯(forward) (` name ` -> ` value ` ) λ§€νκ³Ό μλ°©ν₯(reverse) (` value ` -> ` name ` ) λ§€νμ λͺ¨λ μ μ₯νλ κ°μ²΄λ‘ μ»΄νμΌλ©λλ€.
251
254
λ€λ₯Έ μ΄κ±°ν λ©€λ²μ λν μ°Έμ‘°λ νμ μμ± μ κ·ΌμΌλ‘ 보λ΄μ§λ©° κ²°κ³ μΈλΌμΈ(inline)λμ§ μμ΅λλ€.
252
255
253
256
λ¬Έμμ΄ μ΄κ±°ν λ©€λ²λ μλ§€νμ μμ±νμ§ * μμ΅λλ€* .
254
257
255
258
### ` const ` μ΄κ±°ν (` const ` enums)
256
259
257
- λλΆλΆμ κ²½μ° μ΄κ±°νμ μλ²½νκ² μ ν¨ν λ°©λ²μ
λλ€.
258
- νμ§λ§ λλλ‘ μꡬμ¬νμ΄ λ μ격ν©λλ€.
259
- μ΄κ±°νμ κ°μ μ κ·Όν λ μ¬λΆλμ΄ μμ±λ μ½λμ μΆκ°μ μΈ μ°ν λΉμ©μ νΌνλ €λ©΄ ` const ` μ΄κ±°νμ μ¬μ© ν μ μμ΅λλ€.
260
+ λλΆλΆμ κ²½μ° μ΄κ±°νμ μλ²½νκ² μ ν¨ν λ°©λ²μ
λλ€.
261
+ νμ§λ§ λλλ‘ μꡬμ¬νμ΄ λ μ격ν©λλ€.
262
+ μ΄κ±°νμ κ°μ μ κ·Όν λ μ¬λΆλμ΄ μμ±λ μ½λμ μΆκ°μ μΈ μ°ν λΉμ©μ νΌνλ €λ©΄ ` const ` μ΄κ±°νμ μ¬μ© ν μ μμ΅λλ€.
260
263
` const ` μ΄κ±°νμ μ΄κ±°νμ ` const ` μ§μμλ₯Ό μ¬μ©νμ¬ μ μν©λλ€.
261
264
262
265
``` ts
@@ -266,8 +269,8 @@ const enum Enum {
266
269
}
267
270
```
268
271
269
- ` const ` μ΄κ±°νμ μμ μ΄κ±°ν ννμλ§ μ¬μ©ν μ μμΌλ©° μΌλ° μ΄κ±°νκ³Ό λ¬λ¦¬ μ»΄νμΌνλ λμ μ€λμ ν μ κ±°λ©λλ€.
270
- ` const ` μ΄κ±°ν λ©€λ²λ μ¬μ©νλ μ¬μ΄νΈμμ μΈλΌμΈ(inline)λ©λλ€.
272
+ ` const ` μ΄κ±°νμ μμ μ΄κ±°ν ννμλ§ μ¬μ©ν μ μμΌλ©° μΌλ° μ΄κ±°νκ³Ό λ¬λ¦¬ μ»΄νμΌνλ λμ μμ ν μ κ±°λ©λλ€.
273
+ ` const ` μ΄κ±°ν λ©€λ²λ μ¬μ©νλ μ¬μ΄νΈμμ μΈλΌμΈ(inline)λ©λλ€.
271
274
` const ` μ΄κ±°νμ κ³μ°λ λ©€λ²λ₯Ό κ°μ§μ μκΈ° λλ¬Έμ κ°λ₯ν©λλ€.
272
275
273
276
``` ts
@@ -297,5 +300,5 @@ declare enum Enum {
297
300
}
298
301
```
299
302
300
- μ°λΉμΈνΈ μ΄κ±°νκ³Ό λΉμ°λΉμΈνΈ μ΄κ±°νμ μ€μν μ°¨μ΄μ μ€ νλλ μΌλ° μ΄κ±°νμμ μ΄κΈ°νκ° μλ λ©€λ²λ μ΄μ μ΄κ±°ν λ©€λ²κ° μμλ‘ κ°μ£Όλλ€λ κ²μ
λλ€.
303
+ μ°λΉμΈνΈ μ΄κ±°νκ³Ό λΉμ°λΉμΈνΈ μ΄κ±°νμ μ€μν μ°¨μ΄μ μ€ νλλ μΌλ° μ΄κ±°νμμ μ΄κΈ°νκ° μλ λ©€λ²λ μ΄μ μ΄κ±°ν λ©€λ²κ° μμλ‘ κ°μ£Όλλ€λ κ²μ
λλ€.
301
304
λ°λλ‘, μ΄κΈ°νκ° μλ μ°λΉμΈνΈ (κ·Έλ¦¬κ³ λΉμμ(` non-const ` )) μ΄κ±°ν λ©€λ²λ * νμ* κ³μ°λ κ²μΌλ‘ κ°μ£Όλ©λλ€.
0 commit comments