3+1 Ways to Declare Global Variables in TypeScript

Ferenc Almasi β€’ 2022 September 20 β€’ πŸ“– 3 min read

To declare global variables in TypeScript, create a type definition file ending with .d.ts, and use the declare var syntax to declare global variables.

declare var app: {
    create(): void
}

// Now you can use without type errors:
app.create()
global.d.ts
Copied to clipboard!

As long as you createΒ .d.ts files within your TypeScript project, TypeScript will automatically pick it up to use it as a type definition file.

Looking to improve your skills? Check out our interactive course to master JavaScript from start to finish.
JavaScript Course

Using "declare global"

If you would like to define all global variables within a single object, you can use the declare global syntax, where you need to define all global variables within a global type.

declare global {
    var app: {
        create(): void
    }
}

// Access global variables both with and without referencing the window
app.create()
window.app.create()
global.d.ts
Copied to clipboard!

If you run into the following error: "Augmentations for the global scope can only be directly nested in external modules or ambient module declarations.", you will be able to resolve it by addingΒ export {}Β to the module.

export {}

declare global {
    var app: {
        create(): void
    }
}
global.d.ts
Copied to clipboard!

Extending the Window Interface

Another way to declare global variables in TypeScript is to extend the built-in Window interface. Instead of using the declare keyword, we need to define an interface called Window, and add our global types on top of it.

interface Window {
    app: {
        create(): void
    }
}

// βœ”οΈ Access through the window object
window.app.create()

// ❌ Cannot find name 'app'.
app.create()
global.d.ts
Copied to clipboard!

TypeScript will automatically merge this interface with the built-in Window interface so you will have both the existing and new types. However, this way you will only be able to access global variables through referencing window. If you try to simply write app.create, you may run into errors.


+1: Using Type Assertion

Lastly, as a quick and easy solution, you can also use type assertion to use global variables in a type-safe way. However, be warned that this is not the recommended way to use global variables in TypeScript, you should only use it as a last resort or in exceptional cases.

// Prevent TypeScript to throw errors for global types
(window as any).app.create()
Copied to clipboard!

The downside of using type assertion is that you need to use it each time you are referencing a global variable. For a generic approach, you can use the any type, however, this will prevent proper type checking for your global variables. Both app and its create method are now typed as any.

JavaScript Course Dashboard

Tired of looking for tutorials?

You are not alone. Webtips has more than 400 tutorials which would take roughly 75 hours to read.

Check out our interactive course to master JavaScript in 5 hours.

Learn More

πŸ“š Get access to exclusive content

Want to get access to exclusive content? Support webtips with the price of a coffee to get access to tips, checklists, cheatsheets, and much more. β˜•

Get access Support us
Read more on
πŸŽ‰ Thank you for subscribing to our newsletter. x