Skip to main content

prefer-ts-expect-error

Enforce using @ts-expect-error over @ts-ignore.

🔒

ESLint 配置 中扩展"plugin:@typescript-eslint/strict" 可启用此规则。

🔧

此规则报告的一些问题可通过 --fix ESLint 命令行选项自动修复


TypeScript 允许你通过在错误行之前放置以 @ts-ignore@ts-expect-error 开头的注释来抑制行上的所有错误。 这两个指令的工作方式相同,除了 @ts-expect-error 如果放置在本来就没有错误的行之前会导致类型错误。

英:TypeScript allows you to suppress all errors on a line by placing a comment starting with @ts-ignore or @ts-expect-error immediately before the erroring line. The two directives work the same, except @ts-expect-error causes a type error if placed before a line that's not erroring in the first place.

这意味着 @ts-ignore 很容易被遗忘,并且即使在他们抑制的错误被修复之后仍然保留在代码中。 这是危险的,就好像该行出现新错误一样,它会被遗忘的 @ts-ignore 所抑制,因此会被遗漏。

英:This means its easy for @ts-ignores to be forgotten about, and remain in code even after the error they were suppressing is fixed. This is dangerous, as if a new error arises on that line it'll be suppressed by the forgotten about @ts-ignore, and so be missed.

.eslintrc.cjs
module.exports = {
"rules": {
"@typescript-eslint/prefer-ts-expect-error": "error"
}
};
在线运行试试这个规则 ↗

示例

此规则报告 @ts-ignore 的任何使用情况,包括用 @ts-expect-error 替换的修复程序。

英:This rule reports any usage of @ts-ignore, including a fixer to replace with @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];
};
Open in Playground

何时不使用它

如果你正在针对多个版本的 TypeScript 进行编译并使用 @ts-ignore 来忽略特定于版本的类型错误,则此规则可能会妨碍你。 你可以考虑在这些特定情况下使用 ESLint 禁用注释,而不是完全禁用此规则。

英:If you are compiling against multiple versions of TypeScript and using @ts-ignore to ignore version-specific type errors, this rule might get in your way. You might consider using ESLint disable comments for those specific situations instead of completely disabling this rule.

进一步阅读

选项

该规则不可配置。

资源