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: PassFirst install ESLint:
# npm
npm install eslint --save-dev
# yarn
yarn add eslint --devNext, install eslint-plugin-require-explicit-generics
# npm
npm install eslint-plugin-require-explicit-generics --save-dev
# yarn
yarn add eslint-plugin-require-explicit-generics --devIn 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...