我在用Angular2做一个项目。该项目由角-CLI (1.0.0-beta.17)生成,在TypeScript中使用角v2.0.0。
在这个项目中,我想同时导入宣传单(1.0.1)和Leaflet.VectorGrid(1.0.2)。
我用npm安装它们
npm install leaflet
npm install leaflet.vectorgrid传单有@type定义,所以我也安装了它
npm install @types/leaflet但是Leaflet.VectorGrid没有@类型定义,所以我添加
declare module 'leaflet.vectorgrid';转到我的typings.d.ts文件中。
但是,如何将两个模块导入项目文件中的同一个命名空间?
如果我试着:
import * as L from 'leaflet';
import * as L from 'leaflet.vectorgrid';由于重复的标识符,这在逻辑上引发编译错误。使用不同的别名导入它们,例如:
import * as L from 'leaflet';
import * as LVG from 'leaflet.vectorgrid';也不起作用,因为Leaflet.VectorGrid扩展了全局L对象
LVG.vectorGrid(...)失败了。
任何帮助都将不胜感激。谢谢。
发布于 2016-10-24 10:19:01
一种解决方案是使用脚本标记将两个librairies导入全局范围。然后再加
declare var L: any;到任何需要使用.ts的L文件中都可以工作。但是,这并不理想,因为L不是真正的类型化,并且类型记录编译器不会进行任何验证。
要能够使用两个类型的库,就必须为Leaflet.VectorGrid库编写一个类型定义,据我所知,这个定义目前还不存在,然后将两个对象合并为一个。
发布于 2016-10-20 20:14:59
我认为要求(‘path/to/library’)将有效,您可以在打字本中使用它。
require('node_modules/leaflet/leaflet-xxxxx.js');您还可以使用require方法包括传单。
var L = require('node_modules/leaflet/dist/leaflet-src.js');https://stackoverflow.com/questions/40156653
复制相似问题