我正在使用Azure Atlas库,并决定为第三方库进行自己的输入。我已经在项目结构中定义了一个打字文件atlas.d.ts
,VS Code中的intellisense确实可以接收并允许我使用打字。问题是,运行ng serve
时出现错误:
ReferenceError:未定义图集
在键入中,我只是这样声明了一个命名空间:
declare namespace atlas {
// ... Rest of the the interfaces and classes here
}
问题是我已经阅读了有关实现全局namespaces or modules in typescript的所有文档,并通读了一些堆栈溢出帖子,并修改了tsconfig
以考虑到atlas.d.ts
文件,即使开箱即用的Angular-CLI ts配置将已经包含所有键入文件,但没有运气。
关于什么可能导致ng serve
不考虑输入的想法?您可以找到我正在使用的仓库here
答案 0 :(得分:0)
所以我解决了这个问题。我不知道为什么这行得通,但确实行得通。设置项目的方式是,仅当需要渲染Atlas Map时,我才会将依赖项资源延迟加载到项目中。根据Azure Atlas文档here。我需要在该项目的index.html文件的标题中具有Azure Maps脚本和样式表,这是我在需要地图时要动态进行的操作。但是为了使命名空间正常工作,我将这两行手动添加到了项目根目录下的index.html文件的HEAD中,现在可以识别出我定义的图集命名空间。
<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,并且直到我添加了将要为其输入类型的库(即使现在还不需要它们)时才意识到它。