Gọi một biến toàn cục trong mô-đun


248

Tôi có một tệp bản thảo được gọi là Projects.tstôi muốn tham chiếu một biến toàn cục được khai báo trong một plugin bootstrap được gọi bootbox.js.

Tôi muốn truy cập một biến được gọi bootboxtừ trong một lớp TypeScript.

Có thể không?


3
Có một định nghĩa DefinitelyTyped cho bootbox tại nuget.org/packages/bootbox.TypeScript.DefinitelyTyped
ThisGuy

Câu trả lời:


404

Bạn cần nói với trình biên dịch nó đã được khai báo:

declare var bootbox: any;

Nếu bạn có thông tin loại tốt hơn, bạn cũng có thể thêm thông tin đó any.


5
Có thể bỏ qua ': bất kỳ' bit thực sự.
Oleg Mihailik

37
Điều đó sẽ không làm ví dụ tốt cho định dạng Hỏi & Đáp mặc dù tôi đề nghị họ thêm thông tin loại cụ thể và câu trả lời cho biết họ sẽ đặt nó ở đâu và ở đâu.
Fenton

14
Đối với chúng tôi những người mới đánh máy, chúng tôi sẽ đặt declarecâu nói đó ở đâu?
Bob Horn

Đây có phải là một giải pháp tốt cho các chức năng toàn cầu? Đặt một cái gì đó như thế declare var myFunction: any;nào?
jonathanrz

1
@jonathanrz vâng, nó cũng có thể là một chữ ký cụ thể nếu bạn muốn đi xa đến đó, ví dụdeclare var myFunction: (input: string) => void;
Fenton

47

Đối với những người chưa biết, bạn sẽ phải đưa ra declaretuyên bố bên ngoài classnhư thế này:

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

Trong TypeScripttừ khóa khai báo được sử dụng trong đó bạn muốn xác định một biến có thể không có nguồn gốc từ một TypeScripttệp.

Giống như bạn nói với trình biên dịch rằng, tôi biết biến này sẽ có giá trị khi chạy, vì vậy đừng đưa ra lỗi biên dịch.


15

Nếu đó là thứ bạn tham khảo nhưng không bao giờ biến đổi, thì hãy sử dụng const:

declare const bootbox;

12

Giải pháp Sohnee sạch hơn, nhưng bạn cũng có thể thử

window["bootbox"]

3

Nếu bạn muốn có một tham chiếu đến biến này trong toàn bộ dự án, hãy tạo một d.tstệp ở đâu đó , vd globals.d.ts. Điền vào nó với khai báo biến toàn cục của bạn, ví dụ:

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

Bây giờ bạn có thể tham chiếu nó ở bất cứ đâu trên toàn dự án, giống như vậy:

const bootbox = BootBox;

Đây là một ví dụ .


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.