Ответ
Я активно использую декораторы в TypeScript-проектах, особенно при работе с NestJS. Они отлично подходят для декларативного описания поведения классов и методов.
Практические примеры из моего опыта:
- Валидация: Создание кастомных декораторов для проверки входящих DTO.
-
Логирование и профилирование: Обертывание методов для автоматического замера времени выполнения.
function LogExecutionTime() { return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) { const originalMethod = descriptor.value; descriptor.value = async function (...args: any[]) { const start = performance.now(); const result = await originalMethod.apply(this, args); const end = performance.now(); console.log(`${propertyKey} executed in ${end - start}ms`); return result; }; return descriptor; }; } class UserService { @LogExecutionTime() async findAllUsers() { // ... логика запроса к БД } } - Работа с NestJS: Использование встроенных декораторов (
@Get(),@Post(),@UseGuards(),@Inject()) для построения контроллеров, провайдеров и модулей. Это основа dependency injection и структуры приложения в этом фреймворке.
Я включаю флаг "experimentalDecorators": true в tsconfig.json и слежу за прогрессом этой функциональности в стандарте ECMAScript.