prefer-ts-expect-error
@ts-ignore
の代わりに@ts-expect-error
の使用を強制します。
このルールによって報告される問題の一部は、 --fix
ESLint コマンドラインオプションによって自動的に修正可能です。.
このルールは、@typescript-eslint/ban-ts-comment
に置き換えられ、非推奨となりました。このルール (@typescript-eslint/prefer-ts-expect-error
) は、typescript-eslint の将来のメジャーバージョンで削除されます。
最初に作成されたとき、@typescript-eslint/ban-ts-comment
ルールは、@ts-ignore
ディレクティブを削除することを提案するだけでした。その後、@ts-ignore
を @ts-expect-error
ディレクティブに置き換えることを提案するように更新され、@typescript-eslint/prefer-ts-expect-error
を完全に置き換えるようになりました。
TypeScript では、エラーが発生している行の直前に @ts-ignore
または @ts-expect-error
で始まるコメントを配置することで、行のすべてのエラーを抑制できます。2 つのディレクティブは同じように機能しますが、@ts-expect-error
は、エラーが発生していない行の前に配置すると、型エラーが発生します。
これは、@ts-ignore
が忘れられやすく、抑制していたエラーが修正された後でもコードに残ってしまうことを意味します。これは危険です。なぜなら、その行で新しいエラーが発生した場合、忘れられた @ts-ignore
によって抑制され、見逃されることになるからです。
module.exports = {
"rules": {
"@typescript-eslint/prefer-ts-expect-error": "error"
}
};
Playgroundでこのルールを試す ↗
例
このルールは、@ts-ignore
の使用をすべて報告し、@ts-expect-error
に置き換えるためのフィクサーを提供します。
- ❌ 間違い
- ✅ 正しい
// @ts-ignore
const str: string = 1;
/**
* Explaining comment
*
* @ts-ignore */
const multiLine: number = 'value';
/** @ts-ignore */
const block: string = 1;
const isOptionEnabled = (key: string): boolean => {
// @ts-ignore: if key isn't in globalOptions it'll be undefined which is false
return !!globalOptions[key];
};
Playgroundで開く// @ts-expect-error
const str: string = 1;
/**
* Explaining comment
*
* @ts-expect-error */
const multiLine: number = 'value';
/** @ts-expect-error */
const block: string = 1;
const isOptionEnabled = (key: string): boolean => {
// @ts-expect-error: if key isn't in globalOptions it'll be undefined which is false
return !!globalOptions[key];
};
Playgroundで開くオプション
このルールは設定できません。
使用しない場合
複数のバージョンの TypeScript に対してコンパイルを行っており、バージョン固有の型エラーを無視するために @ts-ignore
を使用している場合、このルールは邪魔になる可能性があります。このルールを完全に無効にする代わりに、ESLint の無効化コメントを特定の状況で使用することを検討してください。