no-implicit-any-catch
Disallow usage of the implicit
any
type in catch clauses.
Some problems reported by this rule are automatically fixable by the --fix
ESLint command line option.
Some problems reported by this rule are manually fixable by editor suggestions.
This rule has been deprecated as TypeScript versions >=4 includes a useUnknownInCatchVariables
compiler option with the same check.
TypeScript 4.0 added support for adding an explicit any
or unknown
type annotation on a catch clause variable.
By default, TypeScript will type a catch clause variable as any
, so explicitly annotating it as unknown
can add a lot of safety to your codebase.
The noImplicitAny
flag in TypeScript does not cover this for backwards compatibility reasons, however you can use useUnknownInCatchVariables
(part of strict
) instead of this rule.
module.exports = {
"rules": {
"@typescript-eslint/no-implicit-any-catch": "warn"
}
};
DEPRECATED
Examples
This rule requires an explicit type to be declared on a catch clause variable.
- ❌ Incorrect
- ✅ Correct
try {
// ...
} catch (e) {
// ...
}
try {
// ...
} catch (e: unknown) {
// ...
}
Options
This rule accepts an options object with the following properties:
interface Options {
/**
* Whether to disallow specifying `: any` as the error type as well. See also `no-explicit-any`.
*/
allowExplicitAny?: boolean;
}
const defaultOptions: Options = [{ allowExplicitAny: false }];
allowExplicitAny
The follow is is not considered a warning with { allowExplicitAny: true }
try {
// ...
} catch (e: any) {
// ...
}
When Not To Use It
If you are not using TypeScript 4.0 (or greater), then you will not be able to use this rule, annotations on catch clauses is not supported.