Это возможно. Первоначальный план аннотаций сделал бы это очень полезным. К сожалению, эти аннотации стали декораторами. В качестве декораторов любые метаданные о свойстве, которое они украшают, хранятся в глобальном хранилище декораторов.
Angular сам преобразует свои встроенные декораторы (@Component (), @Directive (), @Pipe (), NgModel (), @Injectable (), et c ...) при компиляции время назад в аннотации.
В чем разница между аннотациями и декораторами?
Аннотации - это просто метаданные, которые хранятся в экземпляре объекта (в зависимости от того, что вы аннотируете).
Декораторы - это оболочки, которые могут изменять метод доступа, метод, класс свойства, а также предоставлять метаданные для каждого метода доступа, метода или класса.
Из-за этой динамической c природы декораторов компиляторы не могут определить, может ли базовый код безопасно встряхнуться в дереве.
По этой причине декораторы в большинстве случаев не подходят для кода браузера. Хотя пользовательские плагины компилятора могут быть созданы для пользовательских декораторов - что, по сути, будет делать то же, что и Angular для своих декораторов.
Альтернативный подход, который меня заинтересовал бы, заключается в возможности добавления метаданных в декларацию ReactiveForm.
Вот пример чего-то похожего: https://github.com/martinmcwhorter/modelmetadata