Как мы узнали из моей предыдущей статьи, теперь мы можем использовать функцию inject() внутри компонентов, директив и каналов. Вот причины, по которым я выбрал его вместо constructor для внедрения зависимостей. Первое, что я заметил, это то, что он стал чище и читабельнее:

Далее автоматически выводится тип провайдера:

Кроме того, directiveInject() все равно используется в скомпилированном коде:

Более того, декоратор param не является частью спецификации tc39.

Наконец, команда Angular, похоже, движется в этом направлении. Мы можем увидеть использование inject() в новой директиве NgOptimizedImage, например:

Меня больше всего беспокоит согласованность. Я хотел бы увидеть плагин eslint, который поможет в этом.

Подпишитесь на меня в Medium или Twitter, чтобы узнать больше об Angular и JS!