k6-template-typescript icon indicating copy to clipboard operation
k6-template-typescript copied to clipboard

Adding Type Safety to __ENV Variables

Open Nathan-Bernardo opened this issue 2 years ago • 2 comments

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.

Nathan-Bernardo avatar Nov 08 '23 23:11 Nathan-Bernardo

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).

ppcano avatar Nov 09 '23 17:11 ppcano

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.

Nathan-Bernardo avatar Nov 10 '23 17:11 Nathan-Bernardo