IT-Q

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
お使いの版で挙動が違う場合があります。誤りに気づいたらこの解説を報告するから教えてください。