«Декоратор — функция на этапе объявления класса: наблюдает или заменяет declaration, один раз, не per-instance. Сразу отмечу две несовместимые системы: legacy experimentalDecorators с target/key/descriptor и emitDecoratorMetadata, и TC39 Stage 3 в TS 5.0 с value/context без metadata emit. Это load-bearing: Angular, NestJS, TypeORM на legacy reflection — на standard пока не переезжают; новый framework-agnostic код — Stage 3. Ещё деталь — порядок: stacked decorators применяются bottom-up, как композиция функций. Использую редко: поведение уезжает в аннотацию — мощно для cross-cutting, больно отлаживать для остального.»
На собеседовании назовите две системы, metadata/DI и порядок применения; используйте осознанно.