@propelinc/eslint-plugin
v1.9.0
Published
TypeScript plugin for ESLint
Downloads
4
Readme
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 [email protected]
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: :heavy_check_mark: = recommended, :wrench: = fixable, :thought_balloon: = requires type information
| Name | Description | :heavy_check_mark: | :wrench: | :thought_balloon: |
| --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ | -------- | ----------------- |
| @typescript-eslint/adjacent-overload-signatures
| Require that member overloads be consecutive (adjacent-overload-signatures
from TSLint) | :heavy_check_mark: | | |
| @typescript-eslint/array-type
| Requires using either T[]
or Array<T>
for arrays (array-type
from TSLint) | :heavy_check_mark: | :wrench: | |
| @typescript-eslint/await-thenable
| Disallow awaiting a value that is not a Promise (await-promise
from TSLint) | | | :thought_balloon: |
| @typescript-eslint/ban-ts-ignore
| Bans “// @ts-ignore” comments from being used (ban-ts-ignore
from TSLint) | | | |
| @typescript-eslint/ban-types
| Enforces that types will not to be used (ban-types
from TSLint) | :heavy_check_mark: | :wrench: | |
| @typescript-eslint/camelcase
| Enforce camelCase naming convention | :heavy_check_mark: | | |
| @typescript-eslint/class-name-casing
| Require PascalCased class and interface names (class-name
from TSLint) | :heavy_check_mark: | | |
| @typescript-eslint/explicit-function-return-type
| Require explicit return types on functions and class methods | :heavy_check_mark: | | |
| @typescript-eslint/explicit-member-accessibility
| Require explicit accessibility modifiers on class properties and methods (member-access
from TSLint) | :heavy_check_mark: | | |
| @typescript-eslint/func-call-spacing
| Spacing between function identifiers and their invocations | | :wrench: | |
| @typescript-eslint/generic-type-naming
| Enforces naming of generic type variables | | | |
| @typescript-eslint/indent
| Enforce consistent indentation (indent
from TSLint) | :heavy_check_mark: | :wrench: | |
| @typescript-eslint/interface-name-prefix
| Require that interface names be prefixed with I
(interface-name
from TSLint) | :heavy_check_mark: | | |
| @typescript-eslint/member-delimiter-style
| Require a specific member delimiter style for interfaces and type literals | :heavy_check_mark: | :wrench: | |
| @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) | :heavy_check_mark: | | |
| @typescript-eslint/no-array-constructor
| Disallow generic Array
constructors | :heavy_check_mark: | :wrench: | |
| @typescript-eslint/no-empty-interface
| Disallow the declaration of empty interfaces (no-empty-interface
from TSLint) | :heavy_check_mark: | | |
| @typescript-eslint/no-explicit-any
| Disallow usage of the any
type (no-any
from TSLint) | :heavy_check_mark: | | |
| @typescript-eslint/no-extra-parens
| Disallow unnecessary parentheses | | :wrench: | |
| @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) | | | :thought_balloon: |
| @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) | :heavy_check_mark: | :wrench: | |
| @typescript-eslint/no-magic-numbers
| Disallows magic numbers. | :heavy_check_mark: | |
| @typescript-eslint/no-misused-new
| Enforce valid definition of new
and constructor
. (no-misused-new
from TSLint) | :heavy_check_mark: | | |
| @typescript-eslint/no-namespace
| Disallow the use of custom TypeScript modules and namespaces (no-namespace
from TSLint) | :heavy_check_mark: | | |
| @typescript-eslint/no-non-null-assertion
| Disallows non-null assertions using the !
postfix operator (no-non-null-assertion
from TSLint) | :heavy_check_mark: | | |
| @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) | :heavy_check_mark: | | |
| @typescript-eslint/no-parameter-properties
| Disallow the use of parameter properties in class constructors. (no-parameter-properties
from TSLint) | :heavy_check_mark: | | |
| @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) | :heavy_check_mark: | | |
| @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) | | :wrench: | :thought_balloon: |
| @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) | | :wrench: | :thought_balloon: |
| @typescript-eslint/no-unused-vars
| Disallow unused variables (no-unused-variable
from TSLint) | :heavy_check_mark: | | |
| @typescript-eslint/no-use-before-define
| Disallow the use of variables before they are defined | :heavy_check_mark: | | |
| @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) | :heavy_check_mark: | | |
| @typescript-eslint/prefer-for-of
| Prefer a ‘for-of’ loop over a standard ‘for’ loop if the index is only used to access the array being iterated. | | | |
| @typescript-eslint/prefer-function-type
| Use function types instead of interfaces with call signatures (callable-types
from TSLint) | | :wrench: | |
| @typescript-eslint/prefer-includes
| Enforce includes
method over indexOf
method. | | :wrench: | :thought_balloon: |
| @typescript-eslint/prefer-interface
| Prefer an interface declaration over a type literal (type T = { ... }) (interface-over-type-literal
from TSLint) | :heavy_check_mark: | :wrench: | |
| @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) | :heavy_check_mark: | :wrench: | |
| @typescript-eslint/prefer-string-starts-ends-with
| Enforce the use of String#startsWith
and String#endsWith
instead of other equivalent methods of checking substrings | | :wrench: | |
| @typescript-eslint/promise-function-async
| Requires any function or method that returns a Promise to be marked async. (promise-function-async
from TSLint) | | | :thought_balloon: |
| @typescript-eslint/require-array-sort-compare
| Enforce giving compare
argument to Array#sort
| | | |
| @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) | | | :thought_balloon: |
| @typescript-eslint/semi
| Require or disallow semicolons instead of ASI | | :wrench: | |
| @typescript-eslint/type-annotation-spacing
| Require consistent spacing around type annotations (typedef-whitespace
from TSLint) | :heavy_check_mark: | :wrench: | |
| @typescript-eslint/unbound-method
| Enforces unbound methods are called with their expected scope. (no-unbound-method
from TSLint) | :heavy_check_mark: | | :thought_balloon: |
| @typescript-eslint/prefer-regexp-exec
| Enforce to use RegExp#exec
over String#match
| | | :thought_balloon: |
| @typescript-eslint/unified-signatures
| Warns for any two overloads that could be unified into one. (unified-signatures
from TSLint) | | | |