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?

user1027303
la source
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.

Fenton
la source
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.

Himanshu Arora
la source
15

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

declare const bootbox;
Josh Wulf
la source
12

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

window["bootbox"]
Prusdrum
la source
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 .

Krzysztof Grzybek
la source
-4

Téléchargez les typages bootbox

Ajoutez-y ensuite une référence dans votre fichier .ts.

ser savv
la source
2
Veuillez ne pas simplement poster un outil ou une bibliothèque comme réponse. Démontrez au moins comment il résout le problème dans la réponse elle-même.
Filnor