<MyRusakov.ru />

Программирование на C++ в Unreal Engine 5

Программирование на C++ в Unreal Engine 5

Данный курс научит Вас созданию игр на C++ в Unreal Engine 5. Курс состоит из 12 разделов, в которых Вас ждёт теория и практика. Причём, в качестве практики будет создан весьма крупный проект объёмом свыше 5000 строк качественного кода, который уже на практике познакомит Вас с принципами создания игр на C++ в Unreal Engine 5.

Параллельно с курсом Вы также будете получать домашние задания, результатом которых станет, в том числе, полноценная серьёзная работа для портфолио.

Помимо самого курса Вас ждёт ещё и очень ценный Бонус: «Тестирование Unreal-проектов на Python», в рамках которого Вы научитесь писать очень полезные тесты для тестирования самых разных аспектов разработки игр.

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Какая тема Вас интересует больше?

Декораторы в JavaScript: Состояние на 2025 год

Декораторы в JavaScript: Состояние на 2025 год

Декораторы в JavaScript — это мощный синтаксический инструмент, позволяющий модифицировать классы и их элементы (методы, поля, аксессоры) на уровне объявления. Они уже давно используются в таких языках, как TypeScript и Python, а с 2024 года начали входить в стандарт ECMAScript как часть Stage 3 спецификации TC39. В 2025 году они становятся все более популярными в JavaScript-сообществах, особенно в рамках разработки библиотек, фреймворков и метапрограммирования.

Что такое декораторы?

Декоратор — это специальная функция, которая применяется к классу или его члену, позволяя изменить его поведение или добавить метаданные. Синтаксис декоратора использует символ @ перед именем функции:

@myDecorator
class MyClass {}

Важное отличие декораторов в JavaScript по сравнению с TypeScript или Python заключается в том, что они строго определены спецификацией ECMAScript и работают по иным принципам, особенно при применении к полям и методам.

Области применения

Декораторы можно применять к:

  • Классам
  • Методам
  • Полям
  • Геттерам и сеттерам
  • Автоаксессорам (новое понятие в ECMAScript)

Нельзя использовать декораторы для обычных функций или переменных вне класса.

Синтаксис и структура

Рассмотрим простой пример декоратора метода:

function log(target, context) {
  const originalMethod = target;
  return function(...args) {
    console.log(`Вызов ${context.name} с аргументами:`, args);
    return originalMethod.apply(this, args);
  };
}

class Example {
  @log
  greet(name) {
    return `Привет, ${name}`;
  }
}

В этом примере @log оборачивает метод greet, добавляя логирование до его выполнения.

Новый API: Метаданные и контекст

Современные декораторы используют контекст, который предоставляет информацию о декорируемом элементе:

function decorator(value, context) {
  console.log(context.kind); // "method", "field", "accessor", "class"
  console.log(context.name); // имя члена класса
  console.log(context.private); // true или false
}

Это позволяет создавать более универсальные и безопасные декораторы.

Автоаксессоры

Новая концепция — автоаксессоры (auto-accessors) — это синтаксическая абстракция, позволяющая использовать декораторы для контроля доступа к полям:

function logAccess({ get, set }, context) {
  return {
    get() {
      console.log(`Чтение ${context.name}`);
      return get.call(this);
    },
    set(value) {
      console.log(`Запись ${context.name} = ${value}`);
      set.call(this, value);
    }
  };
}

class User {
  @logAccess accessor name = 'Гость';
}

Автоаксессоры позволяют применять декораторы к полям с геттером/сеттером без явного их определения.

Ограничения

  • Декораторы нельзя применять к переменным вне классов.
  • Декораторы не работают с обычными функциями.
  • Использование требует поддержки со стороны окружения (например, Babel, TypeScript, или движка с поддержкой спецификации).

Текущая поддержка

По состоянию на 2025 год:

  • Node.js (начиная с версии 20.10+) поддерживает Stage 3-декораторы с флагом или без него.
  • В большинстве современных браузеров реализация присутствует частично, и может требовать полифилов.
  • TypeScript начал переход от старой системы декораторов к новой, совместимой с ECMAScript.

Использование с TypeScript

TypeScript до версии 5.x использовал старую (экспериментальную) модель декораторов. С выходом TypeScript 5.2+ реализована новая система, совместимая с ECMAScript-декораторами. Для использования новой системы необходимо включить флаг experimentalDecorators и useDefineForClassFields.

{
  "experimentalDecorators": true,
  "useDefineForClassFields": true
}

Практические применения

  • Логирование и трейсинг
  • Валидация входных данных
  • Автоматическое связывание (bind) контекста
  • Регистрация классов (например, в IoC-контейнерах)
  • Кэширование результатов методов

Заключение

Декораторы становятся официальной и мощной частью JavaScript-экосистемы. Они позволяют создавать декларативный, лаконичный и масштабируемый код, особенно в рамках архитектур с метапрограммированием. Несмотря на некоторые ограничения, они открывают новые горизонты для построения библиотек и фреймворков, а также улучшают читаемость и повторное использование кода.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (0):

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.