JavaScript – робимо код чистішим з використанням декораторів - Блог ITVDN
ITVDN: курси програмування
Відеокурси з
програмування

    Обери свою IT спеціальність

    Почати безкоштовно

    Обери свою IT спеціальність

    Почати безкоштовно

      JavaScript – робимо код чистішим з використанням декораторів

      advertisement advertisement

      Работая с JavaScript, вам иногда нужно использовать функцию ‘setTimeout’, чтобы выполнить фрагмент кода в следующем tick. Если вы работаете, например, с Angular, то, скорее всего, уже знакомы с чем-то подобным.

      Пример ‘setTimeout’ “hack”:

      Назовите меня психом, но я терпеть не могу писать код подобным образом, особенно когда ‘setTimeout’ не то, что мне сейчас надо. Давайте сделаем проще. Попробуем превратить функцию ‘setTimeout’ в Декоратор.

      Создадим метод Декоратор с названием ‘timeout’, чтобы код был чище.

      В typescript или babel-метод Декоратор - это просто функция, имеющая три параметра.

      Цель: или функция-конструктор класса для static member, или прототип класса для instance member.

      Ключ: имя member.

      Дескриптор: свойство Дескриптора для member.

      В нашем случае нужно передать аргумент декоратору (количество миллисекунд, которое по умолчанию будет равно нулю), так что будем использовать Decorator Factory.

      Decorator Factory – это простая функция, которая возвращает выражение, которое будет вызвано декоратором в рантайме.

      Дальше, получаем ссылку на оригинальный метод из значения свойства дескриптора.

      Потом переопределяем исходное значение и создаем новую функцию, которая оборачивает исходную с ‘setTimeout’.

      Теперь можем использовать наш декоратор следующим образом:

      Так намного лучше и вы не будете спорить, что выглядит круче.

      В итоге:  

      Вы можете использовать декораторы и создавать с ними крутые приложения. Декораторы существуют не только для frameworks или библиотек, так что будьте креативными и используйте их.

      Оригинальная статья на английском языке. 

      КОМЕНТАРІ ТА ОБГОВОРЕННЯ
      advertisement advertisement

      Пакети підписки з доступом до всіх курсів та сервісів

      Стартовий
      • Усі відеокурси на 3 місяці
      • Тестування з 10 курсів
      • Перевірка 5 домашніх завдань
      • Консультація з тренером 30 хв
      Базовий
      • Усі відеокурси на 6 місяців
      • Тестування з 16 курсів
      • Перевірка 10 домашніх завдань
      • Консультація з тренером 60 хв
      Преміум
      • Усі відеокурси на 1 рік
      • Тестування з 24 курсів
      • Перевірка 20 домашніх завдань
      • Консультація з тренером 120 хв
      new
      Преміум Plus
      • Усі відеокурси на 1 рік
      • Тестування з 24 курсів
      • Перевірка 20 домашніх завдань
      • Консультація з тренером 120 хв
      • Завантаження відео уроків
      Notification success
      Ми використовуємо cookie-файли, щоб зробити взаємодію з нашими веб-сайтами та послугами простою та значущою.