Вызов глобальной переменной внутри модуля

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

Я хочу получить доступ к переменной с именем bootbox из классов TypeScript.

Является ли это возможным?

Ответ 1

Вам нужно сообщить компилятору, что он был объявлен:

declare var bootbox: any;

Если у вас есть более качественная информация о типе, вы можете добавить это тоже вместо any.

Ответ 2

Для тех, кто еще не знал, вам нужно поставить оператор 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 используется ключевое слово declare, где вы хотите определить переменную, которая, возможно, не была создана из файла TypeScript.

Как вы говорите компилятору, я знаю, что эта переменная будет иметь значение во время выполнения, поэтому не бросайте ошибку компиляции.

Ответ 3

Если это то, что вы ссылаетесь, но не мутируете, используйте const:

declare const bootbox;

Ответ 4

Решения Sohnee чище, но вы также можете попробовать

window["bootbox"]

Ответ 5

Если вы хотите иметь ссылку на эту переменную во всем проекте, создайте где-нибудь файл d.ts, например, globals.d.ts. Заполните его объявлениями глобальных переменных, например:

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

Теперь вы можете ссылаться на него в любом месте проекта, просто так:

const bootbox = BootBox;

Вот пример example.