Глобальная и окружающая среда - типизация

Я действительно запутался между окружающей и глобальной зависимостями. Я понял концепцию глобальных зависимостей, что означает, что установка зависимостей глобально. Но придя к окружающим зависимостям, я не понял, что это такое, и теперь типизация недавно объявила, что ambient теперь глобально. Я полностью потерян.

Может кто-то, пожалуйста, помогите мне очистить эту путаницу.

Ответы

Ответ 1

Прежде всего, чтобы вы немного успокоились, эмбиентные и глобальные типизации - одно и то же, это просто изменение имени, поскольку глобально лучше описывает их функцию

Что касается того, что они....

Глобальные декларации, использующие простейшее определение, - это идентификаторы, доступные в глобальном пространстве имен проектов.

"Внешний модуль" - это файл .d.ts с импортом или экспортом верхнего уровня. Внешние модули обернуты Typings в объявить модуль "...." , и после некоторой магии зависимостей вы получите объявления, которые не загрязняют глобальное пространство имен проектов.

Что касается того, почему это важно, вы можете столкнуться с конфликтами с версиями и/или дублирующими определениями.

Пакет A зависит от версии 1.4 зависимости X Пакет B зависит от версии 2.0 зависимости X

Если определения пакета A и пакета B являются глобальными, конфликт версий (разные определения одной и той же зависимости) заканчивается в глобальном пространстве имен и компилятор TypeScript взрывается.

Все сводится к тому, в какой области вы хотите, чтобы объявления типа были доступны.