ESLint не сообщает об ошибках проверки типа компилятора TypeScript - PullRequest
0 голосов
/ 03 марта 2020

Требуется помощь в получении ошибок типа, сообщенных компилятором TypeScript, в выходные данные ESLint. Библиотека typcript-eslint (https://github.com/typescript-eslint/typescript-eslint/blob/master/docs/getting-started/linting/TYPED_LINTING.md) заставляет меня думать, что это возможно.

Структура файла

src/
  ... source files
  tsconfig.json
test/
  ... testing files
.eslintrc.js
package.json
tsconfig.json (symlink to src/tsconfig.json)

.eslintr c. js

module.exports = {
  'env': {
    'jest': true,
    'node': true,
  },
  'extends': [
    'airbnb-typescript/base',
    'plugin:@typescript-eslint/eslint-recommended',
    'plugin:@typescript-eslint/recommended',
    'plugin:@typescript-eslint/recommended-requiring-type-checking',
    'plugin:jest/recommended',
  ],
  'parser': '@typescript-eslint/parser',
  'parserOptions': {
    'project': ['./tsconfig.json'],
    'tsconfigRootDir': __dirname,
  },
  'plugins': [
    '@typescript-eslint',
    'jest',
  ],
  'root': true,
};

пакет. json

{
  "name": "...",
  "version": "...",
  "description": "...",
  "scripts": {},
  "devDependencies": {
    "@types/jest": "^25.1.3",
    "@typescript-eslint/eslint-plugin": "^2.21.0",
    "@typescript-eslint/parser": "^2.21.0",
    "eslint": "^6.8.0",
    "eslint-config-airbnb-typescript": "^7.0.0",
    "eslint-plugin-import": "^2.20.1",
    "eslint-plugin-jest": "^23.8.1",
    "jest": "^25.1.0",
    "nock": "^12.0.2",
    "ts-jest": "^25.2.1"
  },
  "dependencies": {
    "@types/node": "^13.7.7",
    "aws-sdk": "^2.630.0",
    "jsonschema": "^1.2.5",
    "typescript": "^3.8.3"
  }
}

Вывод ESLint пустой - без ошибок - но при запуске Компилятор TypeScript, для сборки проекта, сообщается много ошибок; например:

src/file.ts:xx:xx - error TS2339: Property 'body' does not exist on type 'object'.
src/file.ts:xx:xx - error TS2314: Generic type 'Promise<T>' requires 1 type argument(s).
src/filets:xx:xx - error TS7006: Parameter 'err' implicitly has an 'any' type.

Я что-то упустил в конфигурации или это неправильно? Или это не то, что на самом деле возможно?

Я хотел бы получать отчеты об ошибках через ESLint, потому что в редакторе отображаются ошибки linting, когда я работаю над проектом. Я использую Atom (https://atom.io/), но я также хотел бы, чтобы это работало для VSCode и, возможно, VIM; Члены команды предпочитают разных редакторов.

Ответы [ 2 ]

4 голосов
/ 19 марта 2020

К сожалению, ESLint только сообщает об ошибках из своих собственных линтеров, он не сообщает об ошибках компиляции машинописи. Я сочувствую вам - в своих проектах я использую Babel для более быстрой передачи шрифтов, но поскольку Babel на самом деле не проверяет типы (просто удаляет их), мне все еще нужна эта проверка типов как отдельный шаг lint.

В этой записи блога https://iamturns.com/typescript-babel/ описывается, как вы можете настроить скрипт check-types внутри вашего package.json для выполнения этой функции линтинга и рассматривать компилятор машинописного текста как вторичный линтер. Вы даже можете запустить его внутри той же команды lint, в которой вы запускаете eslint:

{
  ...
  "scripts": {
    "check-types": "tsc --noemit",
    "eslint": "eslint",
    "lint": "npm run eslint && npm run check-types",
  }

Затем вы настроите сервер непрерывной интеграции на запуск npm run lint в качестве одного из этапов сборки.

Для вашего редактора, похоже, есть плагин Atom для машинописи: https://atom.io/packages/atom-typescript
Это был бы идеальный способ, чтобы ваши ошибки машинописи отображались в вашем редакторе. VSCode имеет эту встроенную функциональность. Я в основном использую VSCode, и он отлично работает!

Последний параметр, который я бы порекомендовал для VSCode, - это использовать функцию «автоматического исправления» eslint вместе с плагинами VSCode для eslint и настроить ее на запуск eslint при каждом сохранении файла. , Вы делаете это внутри .vscode/settings.json для каждого проекта:

{
  "editor.codeActionsOnSave": {
    "source.fixAll": true
  }
}
0 голосов
/ 18 марта 2020

Я скачал ваш репозиторий, и все отлично работало в VS Code. Вы забыли запустить Eslint. Я запускал eslint --ext .ts . и tsc -p tsconfig.json, и eslint, и tsconfig работали. Я надеюсь, что вы можете решить это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...