TypeScript 7.0 に上げたら、tsc は速くなったのに、lint(typescript-eslint)が動かなくなりました。なぜですか。
7.0 は Go で書き直され、プログラムから呼ぶ API が同梱されていないためです。公式は 6.0 の API を再公開する @typescript/typescript6 を用意しており、道具側をそちらに向けます。
面接官が見ているのは🔴 7.0 が API を同梱していないことと、その回避方法を知っているか。
これは「6.0 に上げたら非推奨の警告がたくさん出ました。すぐには直せません。どうしますか。」への追撃質問です。
よくある答えと、面談でどう見られるか
- 7.0 にはプログラムから呼ぶための API が同梱されておらず、6.0 の API に頼る道具が動かない。6.0 の API を使う別パッケージを入れる
その通りです。公式は 6.0 の API を再公開する @typescript/typescript6 を用意しています。 - 7.0 は型チェックをやめたので、lint に型情報が渡らない
型チェックはしています。問題は、外部の道具が呼ぶための API が無いことです。 - lint の設定ファイルが 7.0 の形式に合っていない
設定の問題に見えますが、原因はもっと根本的です。道具が使っていた API そのものが無くなっています。 - 7.0 は lint と組み合わせて使えない
使えます。6.0 の API を別に入れて、lint はそちらを使うように構成します。
模範解答
TypeScript 7.0 は Go で書き直した実装で、プログラムから呼ぶための API が同梱されていません。公式の発表も、7.0 は API を同梱しないと明記しています。
typescript-eslint のように、TypeScript の API を呼んで型情報を使う道具は、これまでの JavaScript 製の API に頼っています。そのため 7.0 だけでは動きません。
公式はこのために、6.0 の API を再公開する @typescript/typescript6 を用意しています。道具が読む typescript をこのパッケージに向け、ビルドの tsc は 7.0 のまま使う、という構成が案内されています。7.1 で新しい API が入ります(2026年10月時点ではベータ)。ただし 6.0 までの API とは別物なので、道具の側がそれに対応する必要があります。
面談では「速くなるから上げる」だけでなく、周辺の道具がどの版に頼っているかを確かめてから上げる、と言えるかを見られます。
対象: TypeScript 5.x〜7.0 照合した一次資料: 公式ドキュメント 照合: 2026-10-25 最終更新: 2026-10-25
お使いの版で挙動が違う場合があります。誤りに気づいたらこの解説を報告するから教えてください。