flowtype + eslint 環境で eslint の no-undef で declare された型の型アノテーションの検出を無視する

  • 11
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

どんな状況か

include してる型宣言ファイルでFooを宣言しているとする

decrale type Foo = {};

このとき 次のコードは eslint の no-undef で警告が出る

const foo: Foo = {};

定義ファイルで declare された型はどこかからでもグローバルに参照可能だが、flow はそんなidentifier は知らないと警告してくる

解決策1

.eslintrc の globals に Foo を追加する。
これは動くけどインスタンス変数としてFooにアクセスしてしまうのを許容してしまう。ダメ。

不満を持ってたら次の解決策を見つけた。

解決策2

https://github.com/gajus/eslint-plugin-flowtype#eslint-plugin-flowtype-rules-define-flow-type を使う。

{
  "parser": "babel-eslint",
  "plugins": [
    "flowtype"
  ],
  "rules": {
    "flowtype/define-flow-type": 1,
    "flowtype/use-flow-type": 1
  }
}

これに辿り着くまで長かったので、一応メモしておく。ルール名がわかりにくいと思う。

参考