// @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
お使いの版で挙動が違う場合があります。誤りに気づいたらこの解説を報告するから教えてください。
ここからどう深掘りされるか
この問いに答えられた場合、面談は次の質問に進みます。
観点をすべて押さえられた場合
@ts-expect-error を使うのが適切なのは、どういう場面ですか。一部しか触れられなかった場合
// @ts-ignore を書くと、何が起きますか。触れられなかった場合
// @ts-ignore を書くと、何が起きますか。