#typescript #eslint #customization #abstract-syntax-tree
Вопрос:
Моя цель-отсортировать параметры конструктора в алфавитном порядке с помощью «быстрого исправления» из eslint (для этого я пытаюсь написать это пользовательское правило).
а пока я просто хочу «изолировать» параметры конструктора и заставить eslint отображать волнистые линии и мой message
, когда я наведу на них курсор, но я не знаю, как это сделать, просто посмотрев на AST этого примера кода здесь: https://astexplorer.net/#/gist/dc0def03c26658b1bfa5d8743f9a9f91/70365c30bee24bbec8289744ef4d33cf42268cb8
Какой из них мне выбрать? и как мне убедиться, что он проверяет только те, которые находятся в конструкторе?
//example code used in AST explorer
constructor(
private _appService: AppService,
private _authService: AuthService,
private _formBuilder: FormBuilder,
private _manageScenarioService: ManageScenarioService,
) {}
это то, что у меня есть до сих пор: проблема с этим заключается в том, что он выделяет все идентификаторы, а не только те, которые находятся внутри конструктора
import { Rule } from 'eslint';
export function diSortRule(context: Rule.RuleContext): Rule.RuleListener {
return {
Identifier(node) {
context.report({
node,
message: 'this pops up here',
});
},
};
}
любая помощь была бы так признательна!!
Ответ №1:
Я знаю, что это было уже давно, но я надеюсь, что это все еще может пригодиться вам или другим. Мы только что опубликовали правило, которое можно автоматически исправить, и оно сортирует параметры конструктора в классах, оформленных одним из @Component()
, @Directive()
, @Injectable()
, @Pipe()
.
Вы можете использовать его как:
- установите наш плагин:
npm install --save-dev @erento/eslint-plugin-erento-rules
- Добавьте это в свой файл .eslintrc
"plugins": [ "@erento/erento-rules" ], "rules": { "@erento/erento-rules/injectable-order": "error" }
- запустите свой линтер ESLint
Подробнее об этом правиле здесь: https://github.com/erento/eslint-plugin-erento-rules/blob/master/src/rules/injectable-order.md