跳至主要内容

禁止使用不安全的调用

禁止调用类型为 any 的值。

💭

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

TypeScript 中的 any 类型是一种危险的“逃生舱口”,它可以绕过类型系统。使用 any 会禁用许多类型检查规则,通常最好只在万不得已的情况下或在原型设计代码时使用它。

尽管您有最好的意图,但 any 类型有时会泄漏到您的代码库中。将 any 类型的值作为函数调用会创建一个潜在的类型安全漏洞,并导致您的代码库中出现错误。

此规则禁止调用任何类型为 any 的值。

.eslintrc.cjs
module.exports = {
"rules": {
"@typescript-eslint/no-unsafe-call": "error"
}
};

在游乐场中尝试此规则 ↗

示例

declare const anyVar: any;
declare const nestedAny: { prop: any };

anyVar();
anyVar.a.b();

nestedAny.prop();
nestedAny.prop['a']();

new anyVar();
new nestedAny.prop();

anyVar`foo`;
nestedAny.prop`foo`;
在游乐场中打开

选项

此规则不可配置。

何时不使用它

如果您的代码库中有许多现有的 any 或不安全的代码区域,则可能难以启用此规则。在提高项目中不安全区域的类型安全之前,跳过 no-unsafe-* 规则可能更容易。您可能考虑使用 ESLint 禁用注释 来处理这些特定情况,而不是完全禁用此规则。


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

资源