.(js|ts)拡張子のReactファイルだとVS Codeでシンタックスハイライトや補完が効かない問題、あるいは.(jsx|tsx)で書くべきか否か

タイトルが長い。

VS CodeでReact書いてるとき、ファイル拡張子が.jsではシンタックスハイライトや補完が効かない問題がある。.jsx にするとちゃんと補完が効いてくれるようになって助かる。

でもみんながみんなVS Code使ってるわけじゃないし、GitHubみてると.jsで書いている人もいれば.jsxで書いているひともいる。

いったいどっちがいいんだ〜 ってなる。

VS Code.(js|ts)でも補完やシンタックスハイライトが効くようにする方法

stackoverflow.com

ここの回答によると

{
    "files.associations": {
        "*.js": "javascriptreact"
    }
}

VS Codesettings.jsonfiles.associationsの設定でjs拡張子に対してjavascriptreactにすればいいらしい!

こうすると.(js|ts)の拡張子でJSX書いても問題なく補完効いたりシンタックスハイライト効いたりしてくれるはず。

拡張子は結局どっちにすべきか

結論からいうと.jsxあるいは.tsxにしておいたほうがベター、ということに自分の中ではなった。

  • .jsxならJSX記述がされていることがファイルを開かなくても察せられる
    • Reactのプロジェクト見てるとき.jsxならおそらくコンポーネントが記述されているはずと予想がつく
  • .jsのままVS CodeにJSXとして認識させるには上記のように設定の変更が必要
    • デフォルトに寄せておくほうがよさそう
    • VS Codeのみならず他のエディタでも同様の問題は起こりそう

という理由から、JSX書くなら拡張子は.jsx、TSで書くなら.tsxにしておいたほうがよさそう。

餅は餅屋、という単純なはなしかもしれない。


関連エントリ

tech-1natsu.hatenablog.com

これはonSave時に保存してフォーマットして欲しくない拡張子があって言語毎に設定のスコープを切っている場合のみにやらないといけない設定。

そんな人はあんまりいない気がするし、スコープ切らないなら.(jsx|tsx)で運用してもこのonSaveの設定はイジる必要はないはず。