Объявление пространства имен не определено при запуске ng serve, но intellisense его забирает - PullRequest
0 голосов
/ 27 декабря 2018

Я работаю с библиотекой Azure Atlas и решил создать свои собственные наборы для сторонней библиотеки.Я определил файл типизаций atlas.d.ts в структуре проекта, который обнаруживает intellisense в VS Code и позволяет мне использовать типизации.Проблема заключается в том, что при запуске ng serve я получаю сообщение об ошибке:

ReferenceError: атлас не определен

В типах я просто объявил пространство имен как таковое:

declare namespace atlas {
    // ... Rest of the the interfaces and classes here
}

Проблема в том, что я прочитал всю документацию по реализации глобальных пространств имен или модулей в машинописном наборе , а также прочитал пару сообщений о переполнении стека, изменив tsconfigпринять во внимание файл atlas.d.ts, даже несмотря на то, что в конфигурацию Angular-CLI уже включены все файлы наборов, но не повезло.

Любая идея о том, что может быть причиной ng serveне принимать во внимание наборы?Вы можете найти репо, с которым я работаю здесь

1 Ответ

0 голосов
/ 28 декабря 2018

Итак, я решил проблему.Я не уверен, почему это работает, но это работает.При настройке проекта я лениво загружал ресурсы зависимостей в проект только тогда, когда нужно было отобразить карту Atlas.Согласно документации Azure Atlas здесь .Мне нужно иметь скрипт и таблицу стилей Azure Maps в главе файла index.html для проекта, что я и собирался делать динамически, когда была нужна карта.Но чтобы заставить работать пространство имен, я вручную добавил эти две строки в HEAD моего файла index.html в корне проекта, и теперь определенное мной пространство имен атласа распознается.

<link rel="stylesheet" href="https://atlas.microsoft.com/sdk/css/atlas.min.css?api-version=1" type="text/css" />
<script src="https://atlas.microsoft.com/sdk/js/atlas.min.js?api-version=1"></script>

Если кто-нибудь может дать мне некоторое представление о том, почему это так?Меня действительно интересует, почему angular переключается на мое собственное определенное пространство имен, и не распознает его, пока я не добавлю библиотеку, для которой будут регистрироваться наборы, даже если они еще не были нужны.

...