С Webpack:
const WebpackConfig = {
// ...
plugins: [
new Webpack.DefinePlugin({
__IS_DEVELOPMENT_BUILDING_MODE__: isDevelopmentBuildingMode,
__IS_TESTING_BUILDING_MODE__: isTestingBuildingMode,
__IS_PRODUCTION_BUILDING_MODE__: !isDevelopmentBuildingMode && !isTestingBuildingMode
})
]
}
Теперь я собираюсь использовать TS-Node вместо Webpack. TS-Node не видит эти константы:
ErrorsReportingService.ts:35:9 - error TS2304: Cannot find name '__IS_DEVELOPMENT_BUILDING_MODE__'.
Как инициализировать эти глобальные переменные для TS-Node?
Конечно, для этих констант предоставляется типизация:
declare const __IS_DEVELOPMENT_BUILDING_MODE__: boolean;
declare const __IS_TESTING_BUILDING_MODE__: boolean;
declare const __IS_PRODUCTION_BUILDING_MODE__: boolean;
Обратите внимание, что мне нужны и Webpack, и TSNode.
Решение на концептуальном уровне
- Создать файл и инициализировать глобальные переменные (например,
globalThis.__IS_DEVELOPMENT_BUILDING_MODE__ = false
?) - Скажите TSNode выполнить этот файл первым.
Теперь вопрос в том, разрешает ли TSNode такие вещи или нет.
Обновление
Мой TypeScript потерял объявленные глобальные объекты после Я поместил их внутрь declare global {}
:
typings.d.ts
declare global {
let __IS_DEVELOPMENT_BUILDING_MODE__: boolean;
let __IS_TESTING_BUILDING_MODE__: boolean;
let __IS_PRODUCTION_BUILDING_MODE__: boolean;
}
Теперь компилятор их не видит:
TS2304: Cannot find name '__IS_DEVELOPMENT_BUILDING_MODE__'.
введите описание изображения здесь