`// @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コードとして型エラーになるかどうかの確認ができない。**