跳至主要内容

禁止不必要的类型断言

禁止不改变表达式类型的类型断言。

🔧

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

💭

此规则需要 类型信息 才能运行。

TypeScript 可以使用 as 类型断言来告知表达式与预期类型不同。在代码库中保留 as 断言会增加视觉上的混乱并损害代码可读性,因此,如果它们不改变表达式的类型,最好将其删除。此规则会在类型断言不改变表达式的类型时报告。

.eslintrc.cjs
module.exports = {
"rules": {
"@typescript-eslint/no-unnecessary-type-assertion": "error"
}
};

在游乐场中尝试此规则 ↗

示例

const foo = 3;
const bar = foo!;
在游乐场中打开
const foo = <number>(3 + 5);
在游乐场中打开
type Foo = number;
const foo = <Foo>(3 + 5);
在游乐场中打开
type Foo = number;
const foo = (3 + 5) as Foo;
在游乐场中打开
const foo = 'foo' as const;
在游乐场中打开
function foo(x: number): number {
return x!; // unnecessary non-null
}
在游乐场中打开

选项

此规则接受以下选项

type Options = [
{
/** A list of type names to ignore. */
typesToIgnore?: string[];
},
];

const defaultOptions: Options = [{}];

typesToIgnore

使用 @typescript-eslint/no-unnecessary-type-assertion: ["error", { typesToIgnore: ['Foo'] }],以下代码是正确

type Foo = 3;
const foo: Foo = 3;
在游乐场中打开

何时不使用它

如果您不关心代码中是否存在无操作类型断言,则可以关闭此规则。


类型检查的 lint 规则比传统的 lint 规则更强大,但也需要配置 类型检查的 lint。如果您在启用类型检查的规则后遇到性能下降,请参阅 性能故障排除

资源