Не очень популярный паттерн класса — TypeScript

TypeScript — гибкий язык. Используя его, вы можете писать код, выполняющий одно и то же разными способами. Это можно считать как недостатком, так и достоинством языка.

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

Я считаю это хорошей вещью, поскольку она предлагает разработчикам так много способов выразить то, что делает код. Разработчики могут использовать это, чтобы сделать код более читабельным в зависимости от различных ситуаций.

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

Давайте сначала рассмотрим самый популярный способ определения класса

Если вы видите # впервые. Это недавно введенный, самый уродливый синтаксис в языке для использования закрытых свойств и методов

Этот класс можно использовать так

Теперь давайте посмотрим на код, делающий то же самое по-другому.

Это можно использовать как

Сначала это может показаться странным. Но теперь вы можете легко распознать этот шаблон в кодовых базах.

Это использование функции Фабрика (создание) для создания объектов.

Для читателей книги Вы еще не знаете JS. Это вдохновлено примером, приведенным в книге, с небольшой вариацией использования верхнего уровня const. С этим вариантом мы можем напрямую использовать функции в других модулях, не переименовывая их при импорте. Кроме того, он позволяет легко имитировать (см. плюсы ниже)

Плюсы использования этого способа

  1. ключевое слово this не используется. Ключевое слово this в JavaScript, как вы, возможно, уже знаете, зависит от контекста. Не нужно беспокоиться о том, что this не имеет правильного значения.
  2. Используется меньше понятий. Не используйте такие ключевые слова, как class, this, #, constructor
  3. Вы можете разделить имя функции и определение. Таким образом, вы можете хранить все функции в объекте (здесь publicAPI), чтобы быстро узнать, что является общедоступным.
  4. Легкое издевательство. Если вы используете Jest, это так же просто, как
Pattern.create = jest.fn()

Минусы

  1. Потребление памяти — в Фабрике каждый объект имеет собственный набор общедоступных функций. В то время как в class общедоступные методы являются общими для объектов. Таким образом, фабричный способ занимает больше памяти, но это становится важным, только если мы создаем тысячи одинаковых объектов. "Ссылка"

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

Я добавил статический метод и приватную функцию

Заводской путь может выглядеть так

Использование статического метода одинаково в обоих шаблонах

Pattern.displayClassName()

Бонус

Не очень популярный узор export

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

Мне нравится размещать экспорт вверху, чуть ниже импорта, чтобы легко узнать общедоступный API модуля, не прокручивая файл вниз.