3行まとめ
- TS 3.7.xで補完が壊れるよ
- 補完が壊れるのは3.8で直ったよ
- VSCodeの補完には3.6.xか3.8 Betaを使おう
補完が効かないってどういう状態?
2019年11月にTypeScript 3.7.2がリリースされました。 Optional Chaining と Nullish Coalescingがサポートされて書きやすくなるぞーとウキウキしてVSCodeを開いたのですが、IntelliSenseで補完を出そうとすると
こんな感じで変数の補完が効かなくなります。 そう、変数の補完だけが効かなくなるんです…Objectのプロパティなどの補完は効くという不思議状態。
VSCode + TypeScript 3.7.2の組み合わせで補完が完全に死んで生産性が激落ち君になってる
— ちゅうこ (@y_chu5) 2019年11月19日
こんなTweetをした後にもしかしておま環だと恥ずかしいのでチームの人にも色々試してもらったのですが、おま環ではないことが判明。
TypeScript 3.7.2 のリリース日にこんなIssueも立っていました。
対処法
3. 3.8.0-dev.20191206 をLanguageServiceに使う
— ちゅうこ (@y_chu5) 2019年12月7日
これは手元にTypeScript 3.8.0(typescript@next)とかで入れるじゃなくて、https://t.co/CNV1DNB6uO
の拡張をVSCodeに入れて、こっちを使うようにするっていうやつ。これで補完は元通りになってnullishもいい感じに使える補完になる。
- TypeScript 3.7.xで導入された文法を使わないのであれば補完に3.6.xを使う。
- 変数は文字列として補完してくれるので、それで頑張って、プロパティの補完を使う。
- TypeScript 3.8.xを補完に使う。
が今の所の解決策となりました。
3の解決策を取るには
JavaScript and TypeScript Nightly - Visual Studio Marketplace
の拡張をインストールする必要があり、割とアグレッシブで人に勧めづらかったのですが
先日3.8 Betaがリリースされたので非常に敷居が下がった気がします。 TypeScript 3.8 Betaをどこかのディレクトリにインストールして、補完に使うTypeScriptのPATHをそこに向けるだけで上記の問題は解決するので、お困りの方はそちらを試してみて下さい。
補完に使うTypeScriptってどうやって向けるの?は公式ドキュメントで言うところの
TypeScript Compiling with Visual Studio Code
です。