Виклик глобальної змінної всередині модуля


248

У мене є файл машинопису під назвою, Projects.tsщо я хочу посилатись на глобальну змінну, оголошену у плагіні завантажувальної програми під назвою bootbox.js.

Я хочу отримати доступ до змінної, викликаної bootboxз класів TypeScript.

Це можливо?


3
Для bootbox зараз існує
— ThisGuy

Відповіді:


404

Вам потрібно повідомити компілятору, що він оголошений:

declare var bootbox: any;

Якщо у вас є краща інформація про введення, ви можете також додати її замість any.


5
Насправді можна пропустити "будь-який" біт.
— Олег Михайлик

37
Це не було б хорошим прикладом для формату запитань та запитань, хоча, як я пропоную, вони додають конкретну інформацію про тип, і відповідь показує, як і куди вони її розмістять.
— Фентон

14
Для нас машинописні новачки, куди ми ставимо це declareтвердження?
— Боб Хорн

Це хороше рішення і для глобальних функцій? Розмістити щось на кшталт declare var myFunction: any;?
— jonathanrz

1
@jonathanrz так, це може бути і певний підпис, якщо ви хочете піти так далеко, наприкладdeclare var myFunction: (input: string) => void;
— Fenton

47

Для тих, хто вже не знав, вам доведеться поставити declareзаяву поза вашим classтак:

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

У TypeScriptоголошенні ключове слово використовується там, де потрібно визначити змінну, яка, можливо, не виникла з TypeScriptфайлу.

Це як ви сказали компілятору, що я знаю, що ця змінна матиме значення під час виконання, тому не кидайте помилку компіляції.


15

Якщо ви посилаєтесь на щось таке, але ніколи не мутуєте, тоді використовуйте const:

declare const bootbox;

12

Розчини Соні чистіші, але ви також можете спробувати

window["bootbox"]

3

Якщо ви хочете мати посилання на цю змінну у всьому проекті, створіть десь d.tsфайл, наприклад globals.d.ts. Заповніть його своїми глобальними деклараціями змінних, наприклад:

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

Тепер ви можете посилатися на нього будь-де в межах проекту, саме так:

const bootbox = BootBox;

Ось приклад .


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.