grafana / k6-template-typescript

Template to use TypeScript with k6
Apache License 2.0
279 stars 66 forks source link

Adding Type Safety to __ENV Variables #42

Open Nathan-Bernardo opened 11 months ago

Nathan-Bernardo commented 11 months ago

Hi guys, I added Typescript into my k6 scripts and I'm finding it difficult to extend the ENV type. There are some ENV variables I defined to be a number, but Typescript will define the value as a string rather than a number due to this type definition

// global.d.ts
declare global {
    const __ENV: { [name: string]: string };
}

Is there a way for me to extend the __ENV type definition? One thing I tried was defining my own global.d.ts file with the following:

declare global {
    namespace __ENV {
        const VUS: number
    }
}

but that didn't work.

ppcano commented 11 months ago

Hi @Nathan-Bernardo,

I wonder why do you need to extend _ENV?

If you need the VUS value, you can get it from the test.options object (k6/execution).

Nathan-Bernardo commented 11 months ago

Hi @ppcano,

VUS just happens to be an environment variable I specified for my CI/CD pipeline. I realized I could have used the flag —vus to specify the number of VUs, but there are other environment variables that I would like to specify and they would be of type number. I know I could use “parseInt” to parse the string to a number, but I want to see if there was an option to extend __ENV, unless it’s unnecessary.