user1027303
user1027303

Reputation: 2955

Call a global variable inside module

I have a typescript file called Projects.ts that I want to reference a global variable declared in a bootstrap plugin called bootbox.js.

I want to access a variable called bootbox from within a TypeScript classes.

Is it possible?

Upvotes: 289

Views: 176022

Answers (7)

sammy
sammy

Reputation: 437

// global.d.ts
declare global {
  namespace NodeJS {
    interface Global {
      bootbox: string; // Specify ur type here,use `string` for brief
    }
  }
}

// somewhere else
const bootbox = global.bootbox
// somewhere else
global.bootbox = 'boom'

Upvotes: 3

Krzysztof Grzybek
Krzysztof Grzybek

Reputation: 9416

If You want to have a reference to this variable across the whole project, create somewhere d.ts file, e.g. globals.d.ts. Fill it with your global variables declarations, e.g.:

declare const BootBox: 'boot' | 'box';

Now you can reference it anywhere across the project, just like that:

const bootbox = BootBox;

Here's an example.

Upvotes: 12

ser savv
ser savv

Reputation: 31

Download the bootbox typings

Then add a reference to it inside your .ts file.

Upvotes: -3

Himanshu Arora
Himanshu Arora

Reputation: 2568

For those who didn't know already, you would have to put the declare statement outside your class just like this:

declare var Chart: any;

@Component({
  selector: 'my-component',
  templateUrl: './my-component.component.html',
  styleUrls: ['./my-component.component.scss']
})

export class MyComponent {
    //you can use Chart now and compiler wont complain
    private color = Chart.color;
}

In TypeScript the declare keyword is used where you want to define a variable that may not have originated from a TypeScript file.

It is like you tell the compiler that, I know this variable will have a value at runtime, so don't throw a compilation error.

Upvotes: 60

Josh Wulf
Josh Wulf

Reputation: 4877

If it is something that you reference but never mutate, then use const:

declare const bootbox;

Upvotes: 21

Prusdrum
Prusdrum

Reputation: 633

Sohnee solutions is cleaner, but you can also try

window["bootbox"]

Upvotes: 15

Fenton
Fenton

Reputation: 250922

You need to tell the compiler it has been declared:

declare var bootbox: any;

If you have better type information you can add that too, in place of any.

Upvotes: 463

Related Questions