我正在使用 TS 和 OpenLayers 的应用程序工作。我正在尝试构建依赖关系树,因此在所有应用程序中我将导入和导出语句放入我的 *.ts 文件中。
我有扩展基础 OpenLayers 库的文件“openlayers.ts”。它扩展了例如 openlayers 交互命名空间。
我的 openlayers.ts 看起来像:
declare namespace ol {
namespace interaction {
interface someEvent {
...
}
class myExtendedClass extends ol.interaction.Pointer {
...
}
}
}
我知道ol namespace
从基础 OpenLayers 库和我的扩展ol namespace
将被合并。TypeScript 文档清楚地描述了如何合并命名空间。
但是当我不得不导出我的扩展命名空间时,我的问题就开始了,因为它在我的应用程序中使用并且在导出它之前 - 应用程序没有看到我的扩展命名空间。
我的 openlayers.ts 现在看起来像:
export declare namespace ol {
...
}
正如您在我的文章中看到的那样,ol namespace
我有一个myExtendedClass
需要扩展的内容ol.iteraction.Pointer
(来自基本 OpenLayers)。
但是现在,当我导出我的命名空间时,app 不知道它是什么ol.interaction.Pointer
。所以我推断我必须将基本 OpenLayers 导入到我的文件中,我的应用程序现在将检测什么是ol.interaction.Pointer
.
我的 openlayers.ts 现在看起来像:
import ol = require('openlayers');
export declare namespace ol {
...
}
但现在我有错误:
- (TS) 合并声明“ol”中的单个声明必须全部为导出的或全部为本地的。
- 在
ol.interaction.Pointer
- (TS) 属性“指针”上不存在类型“交互”类型。 - (TS) 进口申报与“ol”的本地申报冲突
我真的不知道我该怎么办。我刚从 TS 开始,这些错误并没有说明我太多。
有什么建议吗?