canonical
Version:
Canonical code style linter and formatter for JavaScript, SCSS, CSS and JSON.
196 lines (129 loc) • 5.82 kB
Markdown
<h1 id="eslint-plugin-flowtype">eslint-plugin-flowtype</h1>
[](https://www.npmjs.org/package/eslint-plugin-flowtype)
[](https://travis-ci.org/gajus/eslint-plugin-flowtype)
[](https://github.com/gajus/canonical)
[](http://flowtype.org/) linting rules for ESLint.
* [eslint-plugin-flowtype](
* [Installation](
* [Configuration](
* [Rules](
* [`require-parameter-type`](
* [`require-return-type`](
* [`space-after-type-colon`](
* [`space-before-type-colon`](
* [`eslint-plugin-flowtype` v1](
<h2 id="eslint-plugin-flowtype-installation">Installation</h2>
1. Install [ESLint](https://www.github.com/eslint/eslint).
1. Install [`babel-eslint`](https://github.com/babel/babel-eslint) parser (ESLint parser [does not support type annotations](https://github.com/eslint/eslint/issues/2157)).
1. Install [`eslint-plugin-flowtype`](https://github.com/gajus/eslint-plugin-flowtype) plugin.
<!-- -->
```sh
npm install eslint
npm install babel-eslint
npm install eslint-plugin-flowtype
```
<h2 id="eslint-plugin-flowtype-configuration">Configuration</h2>
1. Set `parser` property to `babel-eslint`.
1. Add `plugins` section and specify `eslint-plugin-flowtype` as a plugin.
1. Enable rules.
<!-- -->
```json
{
"parser": "babel-eslint",
"plugins": [
"flowtype"
],
"rules": {
"flowtype/require-parameter-type": 1,
"flowtype/require-return-type": 1,
"flowtype/space-after-type-colon": 1,
"flowtype/space-before-type-colon": 1
}
}
```
<h2 id="eslint-plugin-flowtype-rules">Rules</h2>
<h3 id="eslint-plugin-flowtype-rules-require-parameter-type"><code>require-parameter-type</code></h3>
Requires that all function parameters have type annotations.
The following patterns are considered problems:
```js
(foo) => {}
// Message: Missing "foo" parameter type annotation.
(foo = 'FOO') => {}
// Message: Missing "foo" parameter type annotation.
(...foo) => {}
// Message: Missing "foo" parameter type annotation.
({foo}) => {}
// Message: Missing "{foo}" parameter type annotation.
```
The following patterns are not considered problems:
```js
(foo: string) => {}
(foo: string = 'FOO') => {}
(...foo: string) => {}
({foo}: {foo: string}) => {}
```
<h3 id="eslint-plugin-flowtype-rules-require-return-type"><code>require-return-type</code></h3>
Requires that functions have return type annotation.
The following patterns are considered problems:
```js
(foo) => {}
// Message: Missing return type annotation.
```
The following patterns are not considered problems:
```js
(foo): string => {}
```
<h3 id="eslint-plugin-flowtype-rules-space-after-type-colon"><code>space-after-type-colon</code></h3>
Enforces consistent spacing after the type annotation colon.
This rule takes one argument. If it is `'always'` then a problem is raised when there is no space after the type annotation colon. If it is `'never'` then a problem is raised when there is a space after the type annotation colon. The default value is `'always'`.
The following patterns are considered problems:
```js
// Options: ["never"]
(foo: string) => {}
// Message: There must be no space after "foo" parameter type annotation colon.
// Options: ["always"]
(foo:string) => {}
// Message: There must be a space after "foo" parameter type annotation colon.
// Options: ["always"]
(foo: string) => {}
// Message: There must be 1 space after "foo" parameter type annotation colon.
```
The following patterns are not considered problems:
```js
(foo) => {}
(foo: string) => {}
// Options: ["never"]
(foo:string) => {}
// Options: ["always"]
(foo: string) => {}
```
<h3 id="eslint-plugin-flowtype-rules-space-before-type-colon"><code>space-before-type-colon</code></h3>
Enforces consistent spacing before the type annotation colon.
This rule takes one argument. If it is `'always'` then a problem is raised when there is no space before the type annotation colon. If it is `'never'` then a problem is raised when there is a space before the type annotation colon. The default value is `'never'`.
The following patterns are considered problems:
```js
// Options: ["never"]
(foo : string) => {}
// Message: There must be no space before "foo" parameter type annotation colon.
// Options: ["always"]
(foo: string) => {}
// Message: There must be a space before "foo" parameter type annotation colon.
// Options: ["always"]
(foo : string) => {}
// Message: There must be 1 space before "foo" parameter type annotation colon.
```
The following patterns are not considered problems:
```js
(foo) => {}
(foo: string) => {}
// Options: ["never"]
(foo: string) => {}
// Options: ["always"]
(foo : string) => {}
```
<h2 id="eslint-plugin-flowtype-eslint-plugin-flowtype-v1"><code>eslint-plugin-flowtype</code> v1</h2>
`eslint-plugin-flowtype` v1 served a different purpose:
> A plugin for ESLint that strips FlowType type annonations before linting the files.
You can find the source code for v1 at:
https://github.com/gcazaciuc/eslint-plugin-flowtype
Reference to the original codebase included for historical reference purposes.