eslint-plugin-require-explicit-generics-kjj

1.0.1 • Public • Published

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:

myFunction(); // ❌ ESLint: Function 'myFunction' must be called with explicit generics...
myFunction<SomeType>(); // ✅ ESLint: Pass

Installation

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

Configuration (REQUIRED)

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...

Readme

Keywords

none

Package Sidebar

Install

npm i eslint-plugin-require-explicit-generics-kjj

Weekly Downloads

2

Version

1.0.1

License

MIT

Unpacked Size

8.08 kB

Total Files

5

Last publish

Collaborators

  • kyungjin