1. eggc

    No comment

    eggc
Changes in body
Source | HTML | Preview
@@ -1,56 +1,67 @@
[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 ではそのような機能をサポートしていない](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]); // なぜか型指定できない…。
```
# ヘルパーメソッドを追加する
-[#Enum with static functions](https://typescript-jp.gitbook.io/deep-dive/type-system/enums#wotsuenum-with-static-functions) に書いてあるのだがうまく行かなかった。[Stackoverflow](https://stackoverflow.com/a/28151986) で紹介されていた Unitlity class を作る方針よいかもしれない。
+[#Enum with static functions](https://typescript-jp.gitbook.io/deep-dive/type-system/enums#wotsuenum-with-static-functions) に書いてある。export がない場合はサンプル通りで良いのだが export がある場合は、ちょっと特殊な感じになる。
+
+```ts
+enum Direction { ... } // 略
+namespace Direction {
+ export function helper(){ ... } //略
+}
+
+export {Direction}
+```
+
+うまく行かない場合は [Stackoverflow](https://stackoverflow.com/a/28151986) で紹介されていた Unitlity class を作る方針でもよいかもしれない。