Как настроить правило «без цикла» в eslint-плагине-импорт для машинописи?

#typescript #eslint

Вопрос:

Есть три .ts файла, a.ts и b.ts они циклически импортируются друг в друга, в то время c.ts как импортируются оба a.ts и b.ts .

При проверке c.ts я ожидаю , что ESLint сообщит о циклической зависимости.

Но по какой-то причине запуск yarn eslint src/c.ts НЕ вызывает никаких ошибок !!!

a.ts :

 import y from "./b";

const x: number = y   1;
export default x;
 

b.ts :

 import x from "./a";

const y: number = x   1;
export default y;
 

c.ts :

 import x from "./a";
import y from "./b";

console.log(x, y);
 

и .eslintrc.json :

 {
  "extends": [
    "eslint:recommended",
    "plugin:@typescript-eslint/recommended",
    "plugin:import/errors",
    "plugin:import/warnings",
    "plugin:import/typescript"
  ],
  "plugins": ["@typescript-eslint", "import"],
  "parser": "@typescript-eslint/parser",
  "parserOptions": {
    "project": "./tsconfig.json"
  },
  "settings": {
    "import/extensions": [".js", ".jsx", ".ts", ".tsx"],
    "import/parsers": {
      "@typescript-eslint/parser": [".ts", ".tsx"]
    }
  },
  "rules": {
    "import/no-cycle": [
      "error",
      {
        "maxDepth": 10,
        "ignoreExternal": true
      }
    ]
  }
}
 

Репозиторий github: https://github.com/Yaojian/no-cycle-test

Ответ №1:

Это не вызовет ошибку lint в c.ts файле, потому что циклическая зависимость находится между a.ts и b.ts . Описание правила ESLint без цикла.

a.ts file
введите описание изображения здесь

b.ts file
введите описание изображения здесь

Комментарии:

1. Я думаю maxDepth , что опция означает проверку импортированных модулей из c.ts ?