メインコンテンツにスキップ

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 によって抑制され、見逃されることになるからです。

.eslintrc.cjs
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で開く

オプション

このルールは設定できません。

使用しない場合

複数のバージョンの TypeScript に対してコンパイルを行っており、バージョン固有の型エラーを無視するために @ts-ignore を使用している場合、このルールは邪魔になる可能性があります。このルールを完全に無効にする代わりに、ESLint の無効化コメントを特定の状況で使用することを検討してください。

さらに読む

リソース