2016-11-23 7 views
2

Я пытаюсь настроить eslint + babel-eslint + eslint-plugin-react + eslint-plugin-flowtypeeslint-плагин-flowtype не проверяет

У меня есть следующие devDependencies в package.json:

"babel-eslint": "^7.1.1", 
"eslint": "^3.10.2", 
"eslint-config-airbnb": "^13.0.0", 
"eslint-plugin-flowtype": "^2.25.0", 
"eslint-plugin-import": "^2.2.0", 
"eslint-plugin-jsx-a11y": "^2.2.3", 
"eslint-plugin-react": "^6.7.1" 

А следующий .eslinrc:

{ 
    "parser": "babel-eslint", 
    "plugins": [ 
    "flowtype" 
    ], 
    "extends": [ 
    "airbnb", 
    "plugin:flowtype/recommended" 
    ], 
    "rules": { 
    "max-len": [1, 80, 2, {"ignoreComments": true}], 
    "prop-types": [0], 
    "react/jsx-filename-extension": [1, { "extensions": [".js", ".jsx"] }], 
    "react/prefer-stateless-function": [ 
     0, 
     { 
     "ignorePureComponents": true 
     } 
    ], 
    "no-console": 0 
    }, 
    "settings": { 
    "flowtype": { 
     "onlyFilesWithFlowAnnotation": true 
    } 
    } 
} 

я написал простой пример кода в App.js:

function foo() { 
    const a: string = 1; 
    return a; 
} 

async function bar() { 
    const b = await foo(); 
    return b; 
} 

Если я запустил eslint src/App.js, тогда eslint не покажет никаких сообщений. Если добавить "flowtype/require-return-type": 2 Into .eslintrceslint затем показывает:

error Missing return type annotation flowtype/require-return-type 
error Missing return type annotation flowtype/require-return-type 
✖ 2 problems (2 errors, 0 warnings) 

Но я не понимаю, почему const a: string = 1; действует. Как включить тип проверки const a: string = 1;?

ответ

5

eslint-plugin-flowtypeне Поток. Это расширение для ESLint, которое имеет набор правил lint, относящихся только к дополнительному синтаксису Flow.

Например, есть rule, что позволяет применять ли использовать запятые или точку с запятой в типах объектов потока (например type Foo = {bar: string, baz: number} против type Foo = {bar: string; baz: number})

Однако, на самом деле получить проверку типов необходимо установить Flow, и следуйте инструкции там настроить. Короче говоря, это связано с тем, что у вас есть файл .flowconfig в корне вашего проекта, убедившись, что у вас есть заголовок // @flow во всех ваших файлах, а затем запустите flow status из командной строки (или с помощью Nuclide или другого редактора с поддержкой потока) ,

+0

Благодарим за ответ! Вы знаете, можно ли использовать 'flowtype + eslint'? Я имею в виду, возможно ли, что 'eslint' будет показывать ошибки' flowtype' при запуске 'eslint App.js'? –

+0

Возможно, но никто, о котором я знаю, написал что-то, чтобы показать результаты потока в ESLint. Лично я не думаю, что это была бы хорошая идея. Лучше использовать Flow по назначению и использовать ESLint, как предполагалось, в качестве отдельных инструментов. –

1

eslint-plugin-flowtypedoesn't appear to have a rule to check that.

Целью linter-plugin является принудительное использование стилистических вещей или предметов соглашения (например, всегда аннотирование типов возвращаемых функций), а не для проверки типов тем.

Вы хотите запустить сам поток, чтобы проверить правильность типов.

1

Если вы хотите, чтобы ESLint использовал Flow для проверки вашего кода, правильным плагином для использования является .

https://www.npmjs.com/package/eslint-plugin-flowtype-errors

Как и другие писали, eslint-plugin-flowtype только проверяет, что код с утверждениями FlowType синтаксически правильными. На самом деле это не проверка правильности потока.

 Смежные вопросы

  • Нет связанных вопросов^_^