Я портирую приложение JavaScript на TypeScript, и приложение использует глобальную переменную контейнера для общих функций и переменных. Эта переменная, назовем ее Engine
, находится в глобальной области видимости и содержит такие вещи, как функции assert или log, чтобы избежать необходимости их импорта для каждого отдельного файла.
Кроме того, Engine
содержит важныеэкземпляры, как NetworkManager, которые используются отовсюду. Эти экземпляры добавляются к Engine
динамически во время инициализации приложения различными классами.
Меня меньше беспокоит проблема с областями видимости наличия глобальной переменной, но больше подхода в целом и того, как изменить этот объектиз разных модулей без полного объявления типа в одном месте.
Каков наилучший метод для TypeScript здесь?