首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将多个第三方库导入Angular2项目中的同一个命名空间

将多个第三方库导入Angular2项目中的同一个命名空间
EN

Stack Overflow用户
提问于 2016-10-20 14:00:51
回答 2查看 790关注 0票数 3

我在用Angular2做一个项目。该项目由角-CLI (1.0.0-beta.17)生成,在TypeScript中使用角v2.0.0。

在这个项目中,我想同时导入宣传单(1.0.1)和Leaflet.VectorGrid(1.0.2)。

我用npm安装它们

代码语言:javascript
复制
npm install leaflet
npm install leaflet.vectorgrid

传单有@type定义,所以我也安装了它

代码语言:javascript
复制
npm install @types/leaflet

但是Leaflet.VectorGrid没有@类型定义,所以我添加

代码语言:javascript
复制
declare module 'leaflet.vectorgrid';

转到我的typings.d.ts文件中。

但是,如何将两个模块导入项目文件中的同一个命名空间?

如果我试着:

代码语言:javascript
复制
import * as L from 'leaflet';
import * as L from 'leaflet.vectorgrid';

由于重复的标识符,这在逻辑上引发编译错误。使用不同的别名导入它们,例如:

代码语言:javascript
复制
import * as L from 'leaflet';
import * as LVG from 'leaflet.vectorgrid';

也不起作用,因为Leaflet.VectorGrid扩展了全局L对象

代码语言:javascript
复制
LVG.vectorGrid(...)

失败了。

任何帮助都将不胜感激。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-24 10:19:01

一种解决方案是使用脚本标记将两个librairies导入全局范围。然后再加

代码语言:javascript
复制
declare var L: any;

到任何需要使用.tsL文件中都可以工作。但是,这并不理想,因为L不是真正的类型化,并且类型记录编译器不会进行任何验证。

要能够使用两个类型的库,就必须为Leaflet.VectorGrid库编写一个类型定义,据我所知,这个定义目前还不存在,然后将两个对象合并为一个。

票数 1
EN

Stack Overflow用户

发布于 2016-10-20 20:14:59

我认为要求(‘path/to/library’)将有效,您可以在打字本中使用它。

代码语言:javascript
复制
require('node_modules/leaflet/leaflet-xxxxx.js');

您还可以使用require方法包括传单。

代码语言:javascript
复制
var L = require('node_modules/leaflet/dist/leaflet-src.js');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40156653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档