Panggil variabel global di dalam modul

248

Saya memiliki file naskah yang disebut Projects.tsyang saya ingin referensi variabel global dideklarasikan dalam plugin bootstrap yang disebut bootbox.js.

Saya ingin mengakses variabel yang dipanggil bootboxdari dalam kelas TypeScript.

Apa itu mungkin?

pengguna1027303
sumber
3
Ada definisi DefinitelyTyped untuk bootbox sekarang nuget.org/packages/bootbox.TypeScript.DefinitelyTyped
ThisGuy

Jawaban:

404

Anda harus memberi tahu kompiler bahwa ia telah dinyatakan:

declare var bootbox: any;

Jika Anda memiliki informasi jenis yang lebih baik, Anda dapat menambahkannya juga di tempat any.

Fenton
sumber
5
Dapat melewatkan ': apa saja' sebenarnya.
Oleg Mihailik
37
Itu tidak akan menjadi contoh yang baik untuk format tanya jawab karena saya menyarankan mereka menambahkan informasi jenis tertentu dan jawabannya menunjukkan bagaimana dan di mana mereka akan meletakkannya.
Fenton
14
Bagi kami pemula naskah, di mana kita menempatkan declarepernyataan itu?
Bob Horn
Apakah ini solusi yang baik untuk fungsi global juga? Menempatkan sesuatu seperti declare var myFunction: any;?
jonathanrz
1
@jonathanrz ya, itu bisa menjadi tanda tangan khusus juga jika Anda ingin pergi sejauh itu, misalnyadeclare var myFunction: (input: string) => void;
Fenton
47

Bagi mereka yang belum tahu, Anda harus meletakkan declarepernyataan di luar classseperti ini:

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

Dalam TypeScriptkata kunci mendeklarasikan digunakan di mana Anda ingin mendefinisikan variabel yang mungkin tidak berasal dari TypeScriptfile.

Seperti Anda memberi tahu kompiler bahwa, saya tahu variabel ini akan memiliki nilai saat runtime, jadi jangan buang kesalahan kompilasi.

Himanshu Arora
sumber
15

Jika itu adalah sesuatu yang Anda referensi tetapi tidak pernah bermutasi, maka gunakan const:

declare const bootbox;
Josh Wulf
sumber
12

Solusi Sohnee lebih bersih, tetapi Anda juga bisa mencobanya

window["bootbox"]
Prusdrum
sumber
3

Jika Anda ingin memiliki referensi ke variabel ini di seluruh proyek, buat d.tsfile di suatu tempat , misalnya globals.d.ts. Isi dengan deklarasi variabel global Anda, misalnya:

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

Sekarang Anda dapat merujuknya di mana saja di seluruh proyek, seperti itu:

const bootbox = BootBox;

Ini sebuah contoh .

Krzysztof Grzybek
sumber
-4

Unduh ketikkan bootbox

Kemudian tambahkan referensi ke dalamnya di dalam file .ts Anda.

ser savv
sumber
2
Tolong jangan hanya memposting beberapa alat atau perpustakaan sebagai jawaban. Setidaknya tunjukkan bagaimana cara memecahkan masalah dalam jawaban itu sendiri.
Filnor