回答編集履歴

1

テキスト修正

2019/10/20 13:38

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -12,7 +12,73 @@
12
12
 
13
13
 
14
14
 
15
- に記載されている `strEnum` ユーティリティを使ったサンプルと同じような方法で、`type Color` を作成するのはいかがでしょうか?
15
+ に記載されている下記のサンプルと同じような方法で、ご質問に挙げられている `type Color` を作成するのはいかがでしょうか?
16
+
17
+
18
+
19
+ ```typescript
20
+
21
+ /** Utility function to create a K:V from a list of strings */
22
+
23
+ function strEnum<T extends string>(o: Array<T>): {[K in T]: K} {
24
+
25
+ return o.reduce((res, key) => {
26
+
27
+ res[key] = key;
28
+
29
+ return res;
30
+
31
+ }, Object.create(null));
32
+
33
+ }
34
+
35
+
36
+
37
+ /**
38
+
39
+ * Sample create a string enum
40
+
41
+ */
42
+
43
+
44
+
45
+ /** Create a K:V */
46
+
47
+ const Direction = strEnum([
48
+
49
+ 'North',
50
+
51
+ 'South',
52
+
53
+ 'East',
54
+
55
+ 'West'
56
+
57
+ ])
58
+
59
+ /** Create a Type */
60
+
61
+ type Direction = keyof typeof Direction;
62
+
63
+
64
+
65
+ /**
66
+
67
+ * Sample using a string enum
68
+
69
+ */
70
+
71
+ let sample: Direction;
72
+
73
+
74
+
75
+ sample = Direction.North; // Okay
76
+
77
+ sample = 'North'; // Okay
78
+
79
+ sample = 'AnythingElse'; // ERROR!
80
+
81
+ ```
16
82
 
17
83
 
18
84