Есть два основных способа писать служебные функции на TypeScript:

А) Вполне нормальные функции (сгруппированы в файл)
Б) Статические методы класса

Примеры обоих:

Какой самый лучший? Ответ: А). В документации TypeScript сказано:

«Потребители вашего модуля должны иметь как можно меньше проблем при использовании экспортируемых вами вещей. Добавление слишком большого количества уровней вложенности может быть обременительным, поэтому хорошо подумайте о том, как вы хотите структурировать вещи. Экспорт пространства имен из вашего модуля - это пример добавления слишком большого количества уровней вложенности. Хотя пространства имен иногда имеют свое применение, они добавляют дополнительный уровень косвенности при использовании модулей. Это может быстро стать проблемой для пользователей и обычно в этом нет необходимости. Статические методы в экспортированном классе имеют аналогичную проблему - сам класс добавляет уровень вложенности. Если это не увеличивает выразительность или намерение явно полезным способом, рассмотрите возможность простого экспорта вспомогательной функции ».

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

Импорт - не проблема. Большинство IDE импортируют функции автоматически. При желании вы также можете сгруппировать импорт следующим образом:

import * as <mynamespace> from <somepath>

Повеселись!