272 votes

Appeler une variable globale à l'intérieur d'un module

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

Je souhaite accéder à une variable appelée bootbox à partir d'une classe TypeScript.

Est-ce possible ?

439voto

Steve Fenton Points 55265

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

declare var bootbox: any;

Si vous disposez de meilleures informations sur les types, vous pouvez les ajouter à la place de any .

55voto

Himanshu Arora Points 879

Pour ceux qui ne le sauraient pas encore, il faut mettre le 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;
}

En TypeScript le mot-clé declare est utilisé lorsque vous souhaitez définir une variable qui n'est pas nécessairement issue d'un fichier TypeScript fichier.

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

19voto

Sitapati Das Points 390

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

declare const bootbox;

15voto

Prusdrum Points 565

Les solutions Sohnee sont plus propres, mais vous pouvez aussi essayer

window["bootbox"]

7voto

Krzysztof Grzybek Points 737

Si vous voulez avoir une référence à cette variable dans l'ensemble du projet, créez un endroit d.ts par exemple. globals.d.ts . Remplissez-le avec vos déclarations de variables globales, par exemple :

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

Vous pouvez maintenant y faire référence n'importe où dans le projet, comme ça :

const bootbox = BootBox;

Voici un exemple .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X