TypeScript の Enum は string にするといい感じになる

numberの列挙型にした場合、存在しない数値を入れてもコンパイル時にエラーにならない。

enum TamiType {
    Hoge, //0
    Foo,  //1
    Fuga  //2
}

const v: TamiType = 5 //エラーにならない

以下のようにstringの列挙型にすると、コンパイル時にエラーになってくれる。

enum TamiType {
    Hoge = '1',
    Foo = '2',
    Fuga  = '3'
}

const v: TamiType = 5 //Type '5' is not assignable to type 'TamiType'.