使用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。
概念层面上的解决方案:
1.创建文件并初始化全局变量(例如 `globalThis.__IS_DEVELOPMENT_BUILDING_MODE__ = false`)。 2.告诉TSNode首先执行此文件。
现在的问题是TSNode是否允许这样的操作。
更新:
当我将已声明的全局变量放入 `declare global {}` 后,我的TypeScript就失去了这些变量:
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__'.