Все заметки

Уменьшаем количество констант

Во время проведения воркшопов всплыл вопрос: можно ли как-то уменьшить количество констант в коде проекта?

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

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

Обе эти проблемы я решил переработав методы получения и установки компонентов: вместо передачи имени, теперь можно передать сам класс и использовать имя класса в качестве ключа. Тип возвращаемого значения при этом можно вывести через дженерик.

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

Поэтому я добавил необходимость указывать специальные статические строковые поля с указанием имени компонента или системы. Как displayName у компонентов в React. А движок уже под капотом получив на вход класс, достанет имя через это статическое поле.