1. eggc

    No comment

    eggc
Changes in body
Source | HTML | Preview
@@ -1,38 +1,50 @@
[Typescript ドキュメントの Enum のページ](https://www.typescriptlang.org/docs/handbook/enums.html) の概要を日本語でまとめる。
# enum の定義
typescript での enum は下のように定義できる。値を省略したり、文字列にしたりもできるがそれらは元記事参照。
```ts
enum Direction {
UP = 1,
RIGHT = 2,
DOWN = 3,
LEFT = 4
}
```
# enum の値を参照・代入する
Direction という enum 型を定義しているときは下のような感じで使う。
```ts
const userDirection : Direction = Direction.UP;
console.log(userDirection); // 1 を出力
```
# value から key を取り出す
ドキュメントの [#reverse mappings](https://www.typescriptlang.org/docs/handbook/enums.html#reverse-mappings) に書いてある
```ts
const directionString : string = Direction[1];
console.log(directionString); // "UP" を出力
```
# すべての key を取り出す
-typescript ではそのような機能をサポートしていない。今の所自分でなんとかするしかなさそう。
+[Typescript ではそのような機能をサポートしていない](https://github.com/Microsoft/TypeScript/issues/17198)。今の所自分でなんとかするしかなさそう。
+
+
+```ts
+// key と value が混ざっている
+const list: string[] = Object.keys(Direction);
+
+// key のみ
+const keys: string[] = list.filter((k: any) => typeof Direction[k] === "number");
+
+// value のみ
+const values = keys.map((k: any) => Direction[k]); // なぜか型指定できない…。
+```