flowtypeを使ってみて個人的にはまったところ。 v0.65.0時点での話です。仕様なのかバグなのかわからない話も含みます。 enumの罠 flowのenum(正しくはUnion Type)は条件分岐などで、含まれないはずの値と比較しているとエラーを出してくれる。 /* @flow */ type A = "hoge" | "huga" const a: A = "hoge" if(a === "humu") { console.log("hoge") } // 7: if(a === "humu") { // ^ string literal `humu`. This type is incompatible with // 5: const a: A = "hoge" // ^ string enum ただし、これはObjectのプロパティに対して働かない。 /* @flow */