#
EnvironmentVariables
The EnvironmentVariables interface defines the shape and types of the environment-variable keys and values that modules register and access through the FireflyRuntime instance.
Consumer applications are expected to augment this interface to declare the variables they intend to register, providing a fully type-safe experience when working with environment variables.
#
Augment the interface
First, create a types folder in the project:
project
├── src
├────── register.tsx
├────── Page.tsx
├────── index.tsx
├────── App.tsx
├── types
├────── env-vars.d.ts
Then create an env-vars.d.ts file:
project/types/env-vars.d.ts
import "@squide/firefly";
declare module "@squide/firefly" {
interface EnvironmentVariables {
// In the example above, the module only intends to register the `baseApiUrl` environment variable.
baseApiUrl: string;
}
}
Finally, update the project tsconfig.json to include the types folder:
project/tsconfig.json
{
"compilerOptions": {
"incremental": true,
"tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json",
"types": [
"./types/env-vars.d.ts"
]
},
"exclude": ["dist", "node_modules"]
}
Any project that uses these environment variables must also reference the project's env-vars.d.ts file:
project/tsconfig.json
{
"compilerOptions": {
"incremental": true,
"tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json",
"types": [
"../another-project/types/env-vars.d.ts"
]
},
"exclude": ["dist", "node_modules"]
}