In typescript 2.4.0
I am trying to create global/environment variables using DefinePlugin
using webpack
. So here is the approach I am trying to take:
webpack.js Define part
new webpack.DefinePlugin({
environment: JSON.stringify('DEVELOPMENT'),
}),
globals.ts
declare const environment: String;
console.log(environment);
export { environment };
console.log(environment);
environmentService.ts
import { IEnvironment } from 'environment';
import { environment } from '../globals';
console.log(environment);
export default class EnvironmentService implements IEnvironment {
environmentName: String = environment;
get isDevelopment(): boolean {
return this.environmentName === 'DEVELOPMENT';
}
get isProduction(): boolean {
return this.environmentName === 'PRODUCTION';
}
}
In the console log I get:
DEVELOPMENT
DEVELOPMENT
undefined
So console.log(environment);
inside environmentService.ts
is giving me undefined
when I am expecting DEVELOPMENT
and I am not sure why?
It appears it only exports
the variable and not the value?
If someone can explain what I am doing wrong and why its getting undefined
i would appreciate it.
Edit 1
I think I see what DefinePlugin
is doing. Its not setting environment
to DEVELOPMENT
but rather replacing lines console.log(environment);
with console.log('DEVELOPMENT');
and when it exports
environment
its undefined.
You can create a @types
folder and put a declaration file global.d.ts
in it, with just below content.
declare const environment: string;
TypeScript includes all @types
packages by default during compilation: https://www.typescriptlang.org/tsconfig#types
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With