Какие знаешь DI декораторы

«Какие знаешь DI декораторы» — вопрос из категории Паттерны, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Angular есть несколько встроенных DI декораторов:

  1. @Injectable() - помечает класс как сервис, который можно инжектировать
@Injectable({
  providedIn: 'root'
})
export class DataService {}
  1. @Inject() - явно указывает токен для инжектирования
constructor(@Inject('API_URL') private apiUrl: string) {}
  1. @Optional() - указывает, что зависимость не обязательна
constructor(@Optional() private logger: LoggerService) {}
  1. @Self() - ищет зависимость только в текущем инжекторе
  2. @SkipSelf() - пропускает текущий инжектор
  3. @Host() - ограничивает поиск до инжектора хоста

Эти декораторы позволяют гибко управлять процессом внедрения зависимостей в Angular приложениях.