Rufen Sie eine globale Variable innerhalb des Moduls auf


248

Ich habe eine Typoskriptdatei mit dem Namen, Projects.tsdass ich auf eine globale Variable verweisen möchte, die in einem Bootstrap-Plugin namens deklariert ist bootbox.js.

Ich möchte auf eine Variable zugreifen, die bootboxinnerhalb einer TypeScript-Klasse aufgerufen wird .

Ist es möglich?


3
Es gibt eine DefinitelyTyped-Definition für Bootbox jetzt nuget.org/packages/bootbox.TypeScript.DefinitelyTyped
ThisGuy

Antworten:


404

Sie müssen dem Compiler mitteilen, dass er deklariert wurde:

declare var bootbox: any;

Wenn Sie bessere Typinformationen haben, können Sie diese anstelle von hinzufügen any.


5
Kann ': any' Bit eigentlich überspringen.
Oleg Mihailik

37
Das wäre jedoch kein gutes Beispiel für ein Q & A-Format, da ich vorschlage, dass sie bestimmte Typinformationen hinzufügen und die Antwort zeigt, wie und wo sie diese platzieren würden.
Fenton

14
Wo setzen wir für uns Typoskript-Neulinge diese declareAussage?
Bob Horn

Ist dies auch eine gute Lösung für globale Funktionen? So etwas platzieren declare var myFunction: any;?
Jonathanrz

1
@ JonathanRz Ja, es kann auch eine bestimmte Signatur sein, wenn Sie zum Beispiel so weit gehen wollendeclare var myFunction: (input: string) => void;
Fenton

47

Für diejenigen, die es noch nicht wussten, müssten Sie die declareAussage classeinfach so außerhalb Ihrer setzen :

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 TypeScriptder Deklaration wird das Schlüsselwort verwendet, wenn Sie eine Variable definieren möchten, die möglicherweise nicht aus einer TypeScriptDatei stammt.

Es ist, als würden Sie dem Compiler mitteilen, dass diese Variable zur Laufzeit einen Wert hat. Geben Sie also keinen Kompilierungsfehler aus.


15

Wenn Sie darauf verweisen, aber niemals mutieren, verwenden Sie const:

declare const bootbox;

12

Sohnee Solutions ist sauberer, aber Sie können es auch versuchen

window["bootbox"]

3

Wenn Sie im gesamten Projekt einen Verweis auf diese Variable haben möchten, erstellen Sie eine d.tsDatei, z globals.d.ts. Füllen Sie es mit Ihren globalen Variablendeklarationen, z.

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

Jetzt können Sie einfach überall im Projekt darauf verweisen:

const bootbox = BootBox;

Hier ist ein Beispiel .


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.