`// @ts-expect-error`コメントをつけると、対象コードがType Check Errorになる場合のみビルドを通すことができる。[[@ts-ignoreコメント]]との違いは対象コードがType Check Errorにならない場合は**ビルドが失敗すること。** | コメント | 対象がType Check Error | 対象がType Check OK | | | --------------------- | ------------------- | ---------------- | --- | | `// @ts-expect-error` | ビルド成功 | **ビルド失敗** | | | `// @ts-ignore` | ビルド成功 | ビルド成功 | | ## 利用シーン [[TypeScript]]でも[[JavaScript]]でも使えるコード`module.ts`を開発するケースを考える。[[JavaScript]]利用時に型が違う場合はRuntime Errorを出すようにしている。 `module.ts` ```ts import { assert } from "console"; export function double(num: number): number { assert(typeof num === "number"); // JavaScript利用者向け return num * 2; } ``` この`double`関数に対するテストコードを[[TypeScript]]で書くと、引数に`number`以外を入れた時のテストを実行できない。 `test.ts` ```ts import { double } from "./module"; expect(() => double("hoge")).toThrow(); // -> error TS2345: Argument of type '"hoge"' is not assignable to parameter of type 'number'. ``` このテストはType Check Errorとみなされた上で、それでも実行した場合はRuntime Errorになることを確認しなければいけない。以下のようにする必要がある。 `main.js` ```js import { double } from "./module"; // @ts-expect-error expect(() => double("hoge")).toThrow(); ``` [[@ts-ignoreコメント]]では[[JavaScript]]コードとして実行したときにRuntime Errorになることは確認できるが、**TypeScriptコードとして型エラーになるかどうかの確認ができない。**