Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/mattorchard/eslint-plugin-require-explicit-generics


https://github.com/mattorchard/eslint-plugin-require-explicit-generics

eslint eslint-plugin

Last synced: 7 days ago
JSON representation

Awesome Lists containing this project

README

        

# eslint-plugin-require-explicit-generics
Allow configured functions to require explicit generics.

## Why?
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.

## Example
If you list `myFunction` in your `.eslintrc.js`:
```ts
myFunction(); // ❌ ESLint: Function 'myFunction' must be called with explicit generics...
myFunction(); // ✅ ESLint: Pass
```

## Installation
First install [ESLint](http://eslint.org/):
```shell
# npm
npm install eslint --save-dev
# yarn
yarn add eslint --dev
```
Next, install `eslint-plugin-require-explicit-generics`
```shell
# npm
npm install eslint-plugin-require-explicit-generics --save-dev
# yarn
yarn add eslint-plugin-require-explicit-generics --dev
```

## Configuration (REQUIRED)
In your `.estlintrc.js` add `"require-explicit-generics"` to the plugin list.
```js
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.
```js
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.
```js
rules: {
"require-explicit-generics/require-explicit-generics": [
"error",
{ "myFunction": 3, "myVar.myOtherFunction": 1 }
]
},
```
```ts
myVar.myOtherFunction(); // Function 'myVar.myOtherFunction' must be called with generics...
myFunction(); // Function 'myOtherFunction' called with too few explicit generics...
```