no-unsafe-call
Disallow calling a value with type
any
.
🧠
Extending "plugin:@typescript-eslint/recommended-requiring-type-checking"
in an ESLint configuration enables this rule.
💭
This rule requires type information to run.
The any
type in TypeScript is a dangerous "escape hatch" from the type system.
Using any
disables many type checking rules and is generally best used only as a last resort or when prototyping code.
Despite your best intentions, the any
type can sometimes leak into your codebase.
Calling an any
-typed value as a function creates a potential type safety hole and source of bugs in your codebase.
This rule disallows calling any value that is typed as any
.
.eslintrc.cjs
module.exports = {
"rules": {
"@typescript-eslint/no-unsafe-call": "error"
}
};
Examples
- ❌ Incorrect
- ✅ Correct
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`;
declare const typedVar: () => void;
declare const typedNested: { prop: { a: () => void } };
typedVar();
typedNested.prop.a();
(() => {})();
new Map();
String.raw`foo`;
This rule is not configurable.