Есть два основных способа писать служебные функции на TypeScript:
А) Вполне нормальные функции (сгруппированы в файл)
Б) Статические методы класса
Примеры обоих:
Какой самый лучший? Ответ: А). В документации TypeScript сказано:
«Потребители вашего модуля должны иметь как можно меньше проблем при использовании экспортируемых вами вещей. Добавление слишком большого количества уровней вложенности может быть обременительным, поэтому хорошо подумайте о том, как вы хотите структурировать вещи. Экспорт пространства имен из вашего модуля - это пример добавления слишком большого количества уровней вложенности. Хотя пространства имен иногда имеют свое применение, они добавляют дополнительный уровень косвенности при использовании модулей. Это может быстро стать проблемой для пользователей и обычно в этом нет необходимости. Статические методы в экспортированном классе имеют аналогичную проблему - сам класс добавляет уровень вложенности. Если это не увеличивает выразительность или намерение явно полезным способом, рассмотрите возможность простого экспорта вспомогательной функции ».
И это ясно. Компоновщики, такие как Webpack, уже добавляют пространство имен (заключают содержимое файла в функцию). Компилятор TypeScript делает то же самое с перенесенным классом. В конце у нас есть вложенные пространства имен.
Импорт - не проблема. Большинство IDE импортируют функции автоматически. При желании вы также можете сгруппировать импорт следующим образом:
import * as <mynamespace> from <somepath>
Повеселись!