我正在使用TS和OpenLayers的应用程序工作。 我正在尝试构建依赖关系树,以便在所有应用程序中都将导入和导出语句放入我的* .ts文件中。
我有文件“ openlayers.ts”,它扩展了基本的OpenLayers库。 例如,它扩展了openlayers交互名称空间。
我的openlayers.ts看起来像:
declare namespace ol {
namespace interaction {
interface someEvent {
...
}
class myExtendedClass extends ol.interaction.Pointer {
...
}
}
}
我知道基本OpenLayers库中的ol namespace
和我的扩展ol namespace
将被合并。 TypeScript documentation清楚地描述了如何合并名称空间。
但是我的问题始于我不得不导出扩展名称空间的时候,因为它是在我的应用程序中使用的,并且在导出它之前-应用程序没有看到我的扩展名称空间。
我的openlayers.ts现在看起来像:
export declare namespace ol {
...
}
您可以看到我的ol namespace
中有一个myExtendedClass
,它需要扩展ol.iteraction.Pointer
(来自基本OpenLayers)。
但是现在,当我导出我的名称空间时,应用程序不知道它是ol.interaction.Pointer
。因此,我推断我必须将基本的OpenLayers导入到我的文件中,并且我的应用程序现在将检测到ol.interaction.Pointer
。
我的openlayers.ts现在看起来像:
import ol = require('openlayers');
export declare namespace ol {
...
}
但是现在我出现了错误:
ol.interaction.Pointer
-(TS)属性“指针”上,类型“ typeof交互”不存在。我真的不知道该怎么办。 我刚开始使用TS,这些错误并不能说明我太多。
有没有建议?
答案 0 :(得分:1)
好,我找到了解决方法。
有一些问题。
import ol = require('openlayers');
export declare namespace ol
更改为declare namespace ol
。我将把问题留给有类似问题的人。我会让找到解决方案的速度比我发现的快得多。