Я пытаюсь разработать собственное правило TSLint
, которое позволит мне проверить и убедиться, что декоратор @Injectable
не включен в классы, которые не внедряют какие-либо другие службы в себя через конструктор.
Я читал эту документацию и смог ранее написать правило, запрещающее модификаторы export
в тестовых файлах, выполнив:
const hasExport = node.modifiers && node.modifiers.some(
(modifier) => modifier.kind === SyntaxKind.ExportKeyword
);
Этот веб-сайт исследователя AST был полезен на протяжении всего этого процесса, но у меня возникают проблемы с выбором наилучшего способа выяснить, добавляется ли декоратор @Injectable
к моему узлу.
Пока у меня есть:
const hasInjectableDecorator = node.decorators && node.decorators.some(
(decorator) => decorator.kind === SyntaxKind.Decorator
);
Но при этом будет проверяться только наличие любого декоратора (@Injectable, @Component, @NgModule и т. Д.), И мне было интересно, как я мог тогда проверитьтекст, используя доступные свойства / методы в decorator
, чтобы убедиться, что это действительно @Injectable
.Я хотел бы начать с этого, а затем погрузиться в то, чтобы другие сервисы не вводились.
Спасибо