TypeScriptクイズ
TypeScriptにおいて、次の行の直前に「@ts-expect-error」を記述した場合の挙動として正しいものはどれか。
解説
@ts-expect-errorは、TypeScript 3.9で導入されたディレクティブで、次の行に型エラーが存在することを期待するという点が特徴です。次の行で実際に型エラーが発生している場合、そのエラーは抑制される次の行で型エラーが発生していない場合、逆に「Unused '@ts-expect-error' directive」という警告が出るこれに対して@ts-ignoreは単に次の行のエラーを無条件に無視するだけで、エラーが存在しなくても警告は出ません。// @ts-expect-error const x: number = "文字列"; // OK(エラーが期待通り抑制される) // @ts-expect-error const y: number = 1; // NG(エラーがないため警告が出る)この性質により、@ts-expect-errorは将来的に型が修正されてエラーが解消された際に、抑制コメントの消し忘れを検知できるという利点があります。テストコードや、意図的に型エラーを発生させて挙動を確認する場面などで特に有用です。@ts-ignoreは「とにかく黙らせたい」場合に使われがちですが、放置されたまま不要になっても気づけないため、可能な限り@ts-expect-errorを優先して使うことが推奨されています。公式リファレンス: TypeScript 3.9 Release Notes(公式ドキュメント)