web-dev-qa-db-fra.com

Appeler une variable globale dans le module TypeScript

J'ai un fichier TypeScript appelé Projects.ts que je veux référencer une variable globale déclarée dans un plugin bootstrap appelé bootbox.js.

Je souhaite accéder à une variable appelée bootbox à partir de classes TypeScript.

C'est possible?

226
user1027303

Vous devez dire au compilateur qu'il a été déclaré:

declare var bootbox: any;

Si vous avez une meilleure information de type, vous pouvez aussi ajouter cela à la place de any.

372
Fenton

Pour ceux qui ne le savaient pas déjà, vous devriez mettre la déclaration declare en dehors de votre class comme ceci:

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;
}

Dans TypeScript, le mot-clé declare est utilisé lorsque vous souhaitez définir une variable qui ne provient peut-être pas d'un fichier TypeScript.

C'est comme si vous disiez au compilateur que, je sais que cette variable aura une valeur au moment de l'exécution, ne lancez pas d'erreur de compilation.

40
Himanshu Arora

S'il s'agit de quelque chose que vous référencez mais que vous ne mutez jamais, utilisez const:

declare const bootbox;
14
Josh Wulf

Sohnee solutions est plus propre, mais vous pouvez aussi essayer

window["bootbox"]
11
Prusdrum