Skip to content
Branch: master
Find file History
gilbsgilbs and bradzacher feat(eslint-plugin): allow explicit variable type with arrow functions (
#260)

Fixes #149 

Not sure if this is really acceptable though. Please tell me if it has some edge cases I didn't see or if it's just too broad.
Latest commit bea6b92 Mar 21, 2019
Permalink
Type Name Latest commit message Commit time
..
Failed to load latest commit information.
docs/rules feat(eslint-plugin): allow explicit variable type with arrow functions ( Mar 21, 2019
src feat(eslint-plugin): allow explicit variable type with arrow functions ( Mar 21, 2019
tests feat(eslint-plugin): allow explicit variable type with arrow functions ( Mar 21, 2019
tools chore(*): Enable comma-dangle (#271) Feb 19, 2019
typings feat(eslint-plugin): Add unified-signature rule (#178) Mar 20, 2019
CHANGELOG.md chore: publish v1.5.0 Mar 20, 2019
LICENSE chore: rename and reorg packages (#82) Jan 19, 2019
README.md
ROADMAP.md feat(eslint-plugin): Add unified-signature rule (#178) Mar 20, 2019
jest.config.js chore(*): Enable comma-dangle (#271) Feb 19, 2019
package.json chore: publish v1.5.0 Mar 20, 2019
tsconfig.build.json feat(eslint-plugin): Migrate plugin to ts (#120) Feb 11, 2019
tsconfig.json feat(eslint-plugin): Migrate plugin to ts (#120) Feb 11, 2019

README.md

ESLint Plugin TypeScript

Azure Pipelines GitHub license NPM Version NPM Downloads Commitizen friendly

Installation

Make sure you have TypeScript and @typescript-eslint/parser installed, then install the plugin:

npm i @typescript-eslint/eslint-plugin --save-dev

It is important that you use the same version number for @typescript-eslint/parser and @typescript-eslint/eslint-plugin.

Note: If you installed ESLint globally (using the -g flag) then you must also install @typescript-eslint/eslint-plugin globally.

Usage

Add @typescript-eslint/parser to the parser field and @typescript-eslint to the plugins section of your .eslintrc configuration file:

{
  "parser": "@typescript-eslint/parser",
  "plugins": ["@typescript-eslint"]
}

Then configure the rules you want to use under the rules section.

{
  "parser": "@typescript-eslint/parser",
  "plugins": ["@typescript-eslint"],
  "rules": {
    "@typescript-eslint/rule-name": "error"
  }
}

You can also enable all the recommended rules at once. Add plugin:@typescript-eslint/recommended in extends:

{
  "extends": ["plugin:@typescript-eslint/recommended"]
}

If you want to use rules which require type information, you will need to specify a path to your tsconfig.json file in the "project" property of "parserOptions".

{
  "parser": "@typescript-eslint/parser",
  "parserOptions": {
    "project": "./tsconfig.json"
  },
  "plugins": ["@typescript-eslint"],
  "rules": {
    "@typescript-eslint/restrict-plus-operands": "error"
  }
}

See @typescript-eslint/parser's README.md for more information on the available "parserOptions".

Usage with Prettier

Install eslint-config-prettier to disable our code formatting related rules:

{
  "extends": [
    "plugin:@typescript-eslint/recommended",
    "prettier",
    "prettier/@typescript-eslint"
  ]
}

Note: Make sure you have eslint-config-prettier@4.0.0 or newer.

Usage with Airbnb

Airbnb has two configs, a base one eslint-config-airbnb-base and one that includes rules for React eslint-config-airbnb.

First you'll need to install the config according to the instructions in one of the links above. npx install-peerdeps --dev eslint-config-airbnb or npx install-peerdeps --dev eslint-config-airbnb-base should work if you are using npm 5+.

Then you should add airbnb (or airbnb-base) to your extends section of .eslintrc. You might also want to turn on plugin:@typescript-eslint/recommended as well to enable all of the recommended rules.

{
  "extends": ["airbnb-base", "plugin:@typescript-eslint/recommended"]
}

Note: You can use Airbnb's rules alongside Prettier, see Usage with Prettier

Supported Rules

Key: ✔️ = recommended, 🔧 = fixable

Name Description ✔️ 🔧
@typescript-eslint/adjacent-overload-signatures Require that member overloads be consecutive (adjacent-overload-signatures from TSLint) ✔️
@typescript-eslint/array-type Requires using either T[] or Array<T> for arrays (array-type from TSLint) ✔️ 🔧
@typescript-eslint/ban-types Enforces that types will not to be used (ban-types from TSLint) ✔️ 🔧
@typescript-eslint/ban-ts-ignore Bans “// @ts-ignore” comments from being used (ban-ts-ignore from TSLint) ✔️
@typescript-eslint/camelcase Enforce camelCase naming convention ✔️
@typescript-eslint/class-name-casing Require PascalCased class and interface names (class-name from TSLint) ✔️
@typescript-eslint/explicit-function-return-type Require explicit return types on functions and class methods ✔️
@typescript-eslint/explicit-member-accessibility Require explicit accessibility modifiers on class properties and methods (member-access from TSLint) ✔️
@typescript-eslint/generic-type-naming Enforces naming of generic type variables
@typescript-eslint/indent Enforce consistent indentation (indent from TSLint) ✔️ 🔧
@typescript-eslint/interface-name-prefix Require that interface names be prefixed with I (interface-name from TSLint) ✔️
@typescript-eslint/member-delimiter-style Require a specific member delimiter style for interfaces and type literals ✔️ 🔧
@typescript-eslint/member-naming Enforces naming conventions for class members by visibility.
@typescript-eslint/member-ordering Require a consistent member declaration order (member-ordering from TSLint)
@typescript-eslint/no-angle-bracket-type-assertion Enforces the use of as Type assertions instead of <Type> assertions (no-angle-bracket-type-assertion from TSLint) ✔️
@typescript-eslint/no-array-constructor Disallow generic Array constructors ✔️ 🔧
@typescript-eslint/no-empty-interface Disallow the declaration of empty interfaces (no-empty-interface from TSLint) ✔️
@typescript-eslint/no-explicit-any Disallow usage of the any type (no-any from TSLint) ✔️
@typescript-eslint/no-extraneous-class Forbids the use of classes as namespaces (no-unnecessary-class from TSLint)
@typescript-eslint/no-for-in-array Disallow iterating over an array with a for-in loop (no-for-in-array from TSLint)
@typescript-eslint/no-inferrable-types Disallows explicit type declarations for variables or parameters initialized to a number, string, or boolean. (no-inferrable-types from TSLint) ✔️ 🔧
@typescript-eslint/no-misused-new Enforce valid definition of new and constructor. (no-misused-new from TSLint) ✔️
@typescript-eslint/no-namespace Disallow the use of custom TypeScript modules and namespaces (no-namespace from TSLint) ✔️
@typescript-eslint/no-non-null-assertion Disallows non-null assertions using the ! postfix operator (no-non-null-assertion from TSLint) ✔️
@typescript-eslint/no-object-literal-type-assertion Forbids an object literal to appear in a type assertion expression (no-object-literal-type-assertion from TSLint) ✔️
@typescript-eslint/no-parameter-properties Disallow the use of parameter properties in class constructors. (no-parameter-properties from TSLint) ✔️
@typescript-eslint/no-require-imports Disallows invocation of require() (no-require-imports from TSLint) ✔️
@typescript-eslint/no-this-alias Disallow aliasing this (no-this-assignment from TSLint)
@typescript-eslint/no-triple-slash-reference Disallow /// <reference path="" /> comments (no-reference from TSLint) ✔️
@typescript-eslint/no-type-alias Disallow the use of type aliases (interface-over-type-literal from TSLint)
@typescript-eslint/no-unnecessary-qualifier Warns when a namespace qualifier is unnecessary (no-unnecessary-qualifier from TSLint) 🔧
@typescript-eslint/no-unnecessary-type-assertion Warns if a type assertion does not change the type of an expression (no-unnecessary-type-assertion from TSLint) 🔧
@typescript-eslint/no-unused-vars Disallow unused variables (no-unused-variable from TSLint) ✔️
@typescript-eslint/no-use-before-define Disallow the use of variables before they are defined ✔️
@typescript-eslint/no-useless-constructor Disallow unnecessary constructors
@typescript-eslint/no-var-requires Disallows the use of require statements except in import statements (no-var-requires from TSLint) ✔️
@typescript-eslint/prefer-function-type Use function types instead of interfaces with call signatures (callable-types from TSLint) 🔧
@typescript-eslint/prefer-interface Prefer an interface declaration over a type literal (type T = { ... }) (interface-over-type-literal from TSLint) ✔️ 🔧
@typescript-eslint/prefer-namespace-keyword Require the use of the namespace keyword instead of the module keyword to declare custom TypeScript modules. (no-internal-module from TSLint) ✔️ 🔧
@typescript-eslint/promise-function-async Requires any function or method that returns a Promise to be marked async. (promise-function-async from TSLint) ✔️
@typescript-eslint/restrict-plus-operands When adding two variables, operands must both be of type number or of type string. (restrict-plus-operands from TSLint)
@typescript-eslint/type-annotation-spacing Require consistent spacing around type annotations (typedef-whitespace from TSLint) ✔️ 🔧
@typescript-eslint/unified-signatures Warns for any two overloads that could be unified into one. (unified-signatures from TSLint)
You can’t perform that action at this time.