如何包含typescript openlayers 3外部模块?

如何包含typescript openlayers 3外部模块?,typescript,openlayers,Typescript,Openlayers,我想尝试使用typescript在openlayers中设置一个简单的地图: 我把那个文件放进 /typings/openlayers/openlayers.d.ts 我在根目录的顶部有一个app.ts文件: 进口{ 地图 }来自“olx” 在我的tsconfig.json中,我包含了openlayers.d.ts文件的路径。 但是,当我使用npm的typescript包中的tsc命令时,olx并没有定义 我要做的就是画一个简单的openlayers3地图,如果可能的话,希望不要太偏离jav

我想尝试使用typescript在openlayers中设置一个简单的地图:

我把那个文件放进

/typings/openlayers/openlayers.d.ts
我在根目录的顶部有一个app.ts文件:

进口{ 地图 }来自“olx”

在我的tsconfig.json中,我包含了openlayers.d.ts文件的路径。 但是,当我使用npm的typescript包中的tsc命令时,olx并没有定义

我要做的就是画一个简单的openlayers3地图,如果可能的话,希望不要太偏离javascript

从“olx”导入{Map}

这将不起作用,因为没有名为“olx”的环境外部模块。另外,
olx
指的是NPM上的其他名称,因此我们建议不要使用此名称

建议:

定义文件扩展为:

declare module "openlayers" {
    export = olx;
}

首先安装openlayers:

npm install openlayers
然后将openlayers类型安装到您的开发环境:

npm install --save-dev @types/openlayers
要导入,我尝试了:

import * as ol from 'openlayers';
然后您可以调用openlayers中的任何内容,如下所示:

new ol.Map();

为什么定义不包含export=olx零件?或任何导出?因为其设计用于包含
脚本
标记,而不是排除ES6模块。我猜如果在编写定义时没有建立与外部模块加载器一起使用的模块,将调用什么。参见测试文件了解预期用途I’我是typescript新手,您能详细说明脚本标记incluson而非ES6模块排除的含义吗?你是说有人会独立编译openlayers.ts.d flle,然后通过脚本标记将其包含在html页面中,还是使用这个问题中的某些内容:。如果是这样,您的答案是“最佳实践/当前”吗?手动将export=olx添加到当前定义中?或者有没有更好的方法让我不用typescript ts.d文件来使用openlayers?(似乎有很多过时的东西)