Allow configured functions to require explicit generics.
Some libraries are over-permissive with their types, allowing generics to be omitted defaulting them to the any
type.
To prevent accidentally relying on this behaviour:
this plugin allows you to specify a list of functions and constructors that MUST have explicit generics set.
If you list myFunction
in your .eslintrc.js
:
myFunction(); // ❌ ESLint: Function 'myFunction' must be called with explicit generics...
myFunction<SomeType>(); // ✅ ESLint: Pass
First install ESLint:
# npm
npm install eslint --save-dev
# yarn
yarn add eslint --dev
Next, install eslint-plugin-require-explicit-generics
# npm
npm install eslint-plugin-require-explicit-generics --save-dev
# yarn
yarn add eslint-plugin-require-explicit-generics --dev
In your .estlintrc.js
add "require-explicit-generics"
to the plugin list.
plugins: [
"require-explicit-generics",
],
Then in the rules section set "require-explicit-generics/require-explicit-generics"
pass the log level (either "error"
or "warning"
),
then the list of functions to check.
rules: {
"require-explicit-generics/require-explicit-generics": [
"error",
// List your functions here
[ "myFunction", "myVar.myOtherFunction" ]
]
},
You can also use a map to define how many generics to expect for each function.
rules: {
"require-explicit-generics/require-explicit-generics": [
"error",
{ "myFunction": 3, "myVar.myOtherFunction": 1 }
]
},
myVar.myOtherFunction(); // Function 'myVar.myOtherFunction' must be called with generics...
myFunction<TypeA>(); // Function 'myOtherFunction' called with too few explicit generics...