angular - 运行 ng serve 时未定义命名空间声明,但智能感知确实选择了它
问题描述
我正在使用 Azure Atlas 库,并决定为第三方库制作自己的类型。我已经atlas.d.ts
在项目结构中定义了一个类型文件,VS Code 中的智能感知确实会拾取并允许我使用类型。问题是,在运行时ng serve
,我收到一个错误:
ReferenceError:未定义图集
在类型中,我简单地声明了一个命名空间:
declare namespace atlas {
// ... Rest of the the interfaces and classes here
}
问题是我已经阅读了关于在 typescript 中实现全局命名空间或模块的所有文档,并阅读了几个堆栈溢出帖子,修改了tsconfig
以考虑atlas.d.ts
文件,即使 Angular-CLI ts 配置不在框将已经包含所有类型文件,但没有运气。
关于什么可能导致ng serve
不考虑打字的任何想法?你可以在这里找到我正在使用的 repo
解决方案
所以我解决了这个问题。我不确定为什么会这样,但确实如此。我设置项目的方式是,只有在需要渲染 Atlas Map 时,我才会将依赖资源延迟加载到项目中。根据此处的 Azure Atlas 文档。我需要在项目的 index.html 文件的头部包含 Azure Maps 脚本和样式表,这是我在需要地图时要动态执行的操作。但是为了让命名空间正常工作,我手动将这两行添加到项目根目录的 index.html 文件的 HEAD 中,现在我定义的 atlas 命名空间已被识别。
<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 会在我自己定义的命名空间上翻转并且直到我添加了要注册类型的库之后才会识别它,即使它们还没有被需要。
推荐阅读
- python - 从特定目录读取多个图像,预先设置并使用 python 和 opencv 将它们保存到另一个目录
- java - 如何在 Azure Devops 的 Maven@3 任务中将 maven 选项传递给 JaCoCo 工具
- linux - 如何将汇编代码修补到exe文件的末尾
- c# - 如何在 Xamarin.forms C# 中检查长时间下载的数据
- python - 使用 stringvar 的 Python 标签
- c# - 为什么我的asp页面执行缓存代码
- c++ - 为什么我尝试以这种方式将字符串转换为 C 字符串失败?
- javascript - 如何在我设计的 html 页面中使用快照/查询快照显示/显示从数据库获取的数据?
- javascript - 即使 CORS 配置为允许访问,也未发送 Http cookie
- sass - 包裹导入安装到node_modules的material-components-web scss文件不起作用