Это ожидаемое поведение Typescript. См. Почему импорт удаляется в моем emit? и этот поток на github Typescript.
В TypeScript предполагается, что импорт модуля не имеет побочных эффектов, поэтому он удаляет импорт модулей, которые не используются ни в одном выражении.
Без использования пространства имен app
Typescript даже не пытается импортировать и запускать log.js
, поскольку пространство имен не является ' t * где используется и , предполагается, что модуль не имеет побочных эффектов, поэтому нет смысла импортировать его.
Если вы делаете , хотите утверждать, что импорт должен иметь один побочные эффекты, используйте:
import 'log.ts';
В результате код верхнего уровня log.ts
будет зарегистрирован, как и ожидалось.
Обратите внимание, что это поведение, специфичное для Typescript c. вне Typescript , код верхнего уровня модуля запускается всякий раз, когда модуль импортируется, независимо от того, что было импортировано или на которое ссылаются позже.