Appeler une variable globale à l'intérieur du module


248

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

Je veux accéder à une variable appelée à bootboxpartir d'une classe TypeScript.

C'est possible?


3
Il existe une définition DefinitelyTyped pour bootbox maintenant nuget.org/packages/bootbox.TypeScript.DefinitelyTyped
— ThisGuy

Réponses:


404

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

declare var bootbox: any;

Si vous avez de meilleures informations de type, vous pouvez également les ajouter à la place de any.


5
Peut sauter ': n'importe quel bit' en fait.
— Oleg Mihailik

37
Cela ne constituerait pas un bon exemple pour un format de questions / réponses, car je suggère qu'ils ajoutent des informations de type spécifiques et la réponse montre comment et où ils les mettraient.
— Fenton

14
Pour nous débutants en dactylographie, où mettons-nous cette declaredéclaration?
— Bob Horn

Est-ce aussi une bonne solution pour les fonctions globales? Placer quelque chose comme declare var myFunction: any;?
— jonathanrz

1
@jonathanrz oui, cela peut aussi être une signature spécifique si vous voulez aller aussi loin, par exempledeclare var myFunction: (input: string) => void;
— Fenton

47

Pour ceux qui ne le savent pas déjà, vous devrez mettre la declaredéclaration en dehors de votre classcomme 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 TypeScriptle mot-clé declare est utilisé où vous souhaitez définir une variable qui peut ne pas provenir d'un TypeScriptfichier.

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


15

Si c'est quelque chose que vous référencez sans jamais muter, utilisez const:

declare const bootbox;

12

Les solutions Sohnee sont plus propres, mais vous pouvez également essayer

window["bootbox"]

3

Si vous voulez avoir une référence à cette variable dans tout le projet, créez un d.tsfichier quelque part , par exemple globals.d.ts. Remplissez-le avec vos déclarations de variables globales, par exemple:

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

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

const bootbox = BootBox;

Voici un exemple .


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.