Прочитал
TypeScript Deep Dive и узнал, что переменные объявленные в каждом файле проекта являются глобально определенными для typescript.
Например:
// foo.ts
const foo = 'foo'
// bar.ts Другой файл проекта
const bar = foo
Скомпилируется без ошибок т.к. typescript видит, что переменная foo определена в другом файле. Для браузерных скриптов такое поведение может и логично, но в nodejs это может стать проблемой. Например при запуске скомпилированного bar.ts node говорит ReferenceError: foo is not defined. Интересует вопрос как избавиться от такого поведения по умолчанию?
Например в книге предлагается использовать namespace, что конечно логично, если мы пишем скрипт, который будет выполняться в браузере. В nodejs каждый файл имеет свой контекст исполнения и я вляется отдельным модулем сам по себе, использовать в каждом файле namespace неудобно и не нужно.
Если мы что-то экспортируем с помощью export, то typescript не будет выносить отределение типов в данном файле в глобальную область видимости. Тогда можно в начале файла писать что-то типо
export const __ = null
const foo = 'foo'
Теперь foo не определена в других файлах.
Но во-первых это хак, во-вторых это неудобно, в-третьих можно забыть
Больше всего меня беспокоит другой вопрос. Я пытался найти ответ в документации, гуглил, и ничего не нашел. Выходит для других это не является проблемой, значит я чего-то не понимаю? Прошу помощи у сообщества)