3+1 Ways to Declare Global Variables in TypeScript
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()
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.

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

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 less time.
Learn MoreRecommended

How to Save Writable Store in Svelte to Local Storage
Learn how to create a persistent store in Svelte

How to Create an Infinite Scroll Component in React
With the help of the Intersection Observer API
