Chiama una variabile globale all'interno del modulo


249

Ho un file dattiloscritto Projects.tsche desidero fare riferimento a una variabile globale dichiarata in un plug-in bootstrap chiamato bootbox.js.

Voglio accedere a una variabile chiamata bootboxall'interno di una classe TypeScript.

È possibile?


3
Esiste una definizione DefinitelyTyped per bootbox ora nuget.org/packages/bootbox.TypeScript.DefinitelyTyped
ThisGuy

Risposte:


404

Devi dire al compilatore che è stato dichiarato:

declare var bootbox: any;

Se disponi di informazioni di tipo migliore, puoi aggiungerle anche al posto di any.


5
Può saltare ": qualsiasi" bit in realtà.
Oleg Mihailik,

37
Ciò non costituirebbe un buon esempio per un formato di domande e risposte, anche se, come sto suggerendo, aggiungono informazioni specifiche sul tipo e la risposta mostra come e dove verranno inserite.
Fenton,

14
Per noi principianti dattiloscritti, dove inseriamo questa declareaffermazione?
Bob Horn,

È una buona soluzione anche per le funzioni globali? Inserire qualcosa del genere declare var myFunction: any;?
jonathanrz,

1
@jonathanrz sì, può essere anche una firma specifica se vuoi andare così lontano, per esempiodeclare var myFunction: (input: string) => void;
Fenton

47

Per coloro che non lo sapevano già, dovresti mettere la declaredichiarazione fuori dal tuo classproprio in questo modo:

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

Nella TypeScriptparola chiave declare viene utilizzato dove si desidera definire una variabile che potrebbe non essere stata originata da un TypeScriptfile.

È come se dicessi al compilatore che, so che questa variabile avrà un valore in fase di esecuzione, quindi non gettare un errore di compilazione.


15

Se è qualcosa a cui fai riferimento ma non muti mai, usa const:

declare const bootbox;

12

Le soluzioni Sohnee sono più pulite, ma puoi anche provare

window["bootbox"]

3

Se vuoi avere un riferimento a questa variabile in tutto il progetto, crea un d.tsfile da qualche parte , ad es globals.d.ts. Riempilo con le dichiarazioni delle variabili globali, ad esempio:

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

Ora puoi fare riferimento in qualsiasi punto del progetto, proprio così:

const bootbox = BootBox;

Ecco un esempio .


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.