IT-Q

// @ts-ignore が多く使われていました。// @ts-expect-error との違いは何ですか。

どちらも次の1行の型エラーを黙らせますが、@ts-expect-error はエラーが無いと「不要」とエラーで知らせます。原因が直ったときに外し忘れないので、こちらを使います。

面接官が見ているのはエラーを黙らせる仕組みの違いと、残すならどちらかを判断できるか。

よくある答えと、面談でどう見られるか

  • @ts-expect-error は、その行にエラーが無くなると「不要になった」とエラーで知らせる
    その通りです。原因が直ったときに気づけるので、残すならこちらです。
  • 違いは無い。新しい書き方なだけ
    違います。エラーが無いときの扱いが逆です。
  • @ts-ignore はファイル全体、@ts-expect-error は1行だけを対象にする
    どちらも直後の1行が対象です。ファイル全体を止めるのは // @ts-nocheck です。
  • @ts-expect-error を書くと、実行時にもエラーになる
    実行時には何も起きません。どちらもコンパイル時の検査だけの話です。

模範解答

どちらも直後の1行の型エラーを報告しないようにします。違いは、エラーが無かったときの扱いです。

@ts-ignore は、エラーがあってもなくても黙っています。@ts-expect-error(TypeScript 3.9 で追加)は、その行にエラーが無いと「この指示は不要」とエラーで知らせます。

この差は、原因が直ったときに効きます。型定義が直ってエラーが消えても、@ts-ignore は残り続け、その行で将来起きる別のエラーまで黙らせてしまいます。@ts-expect-error なら、要らなくなった時点で気づけます。

残すなら @ts-expect-error に寄せ、なぜ残しているかをコメントに書きます。

対象: TypeScript 5.x〜7.0 照合した一次資料: 公式ドキュメント 照合: 2026-10-25 最終更新: 2026-10-25
お使いの版で挙動が違う場合があります。誤りに気づいたらこの解説を報告するから教えてください。

ここからどう深掘りされるか

この問いに答えられた場合、面談は次の質問に進みます。