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


249

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

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

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


3
Теперь есть определенное определение для bootbox nuget.org/packages/bootbox.TypeScript.DefiniteTyped
ThisGuy

Смотрите также stackoverflow.com/questions/17764468/...
koppor

Ответы:


404

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

declare var bootbox: any;

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


5
Может пропустить «любой» бит на самом деле.
Олег Михайлик

37
Это не было бы хорошим примером для формата вопросов и ответов, хотя, как я предлагаю, они добавляют конкретную информацию о типе, а ответ показывает, как и где они ее разместят.
Фентон

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

Это хорошее решение для глобальных функций тоже? Размещаете что-то вроде declare var myFunction: any;?
Джонатанрз

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

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

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.