Sobes.tech
Назад к вопросам
Junior — Middle
102

Объясните, что представляет собой паттерн Decorator и как его применяют в фреймворке NestJS

Ответ от нейросети

sobes.tech AI

Паттерн Decorator — это структурный паттерн проектирования, который позволяет динамически добавлять объектам новые обязанности, оборачивая их в «декораторы». Это альтернатива наследованию, позволяющая расширять функциональность без изменения исходного кода.

В NestJS декораторы широко используются для аннотирования классов, методов, параметров и свойств, чтобы добавить метаданные, которые потом обрабатываются фреймворком. Например, декораторы @Controller(), @Get(), @Injectable() — это специальные функции, которые модифицируют поведение классов или методов.

Пример простого пользовательского декоратора в NestJS:

import { SetMetadata } from '@nestjs/common';

export const Roles = (...roles: string[]) => SetMetadata('roles', roles);

// Использование:
@Controller('users')
export class UsersController {
  @Get()
  @Roles('admin')
  findAll() {
    // метод доступен только для ролей admin
  }
}

Таким образом, паттерн Decorator в NestJS помогает добавлять метаданные и расширять функциональность классов и методов без изменения их внутренней логики.