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

Dependencies (0)

    Dev Dependencies (0)

      Package Sidebar

      Install

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

      Weekly Downloads

      1

      Version

      1.0.1

      License

      MIT

      Unpacked Size

      8.08 kB

      Total Files

      5

      Last publish

      Collaborators

      • kyungjin