【问题标题】:Multiple import under same namespace typescript同一命名空间打字稿下的多次导入
【发布时间】:2018-03-14 10:22:05
【问题描述】:

我知道这将是一个愚蠢的问题,但我环顾四周并没有发现任何可以帮助我理解的问题。

我有一个离子项目,我在上面导入了leafletjs 现在一切正常,我使用以下代码将其导入:

import leaflet from 'leaflet';

现在我想将leaftlet.easyButton 添加到我的项目中。

在我看来,这个库应该扩展传单之一,对吧?

import leaflet from 'leaflet';
import leaflet from 'leaflet-easybutton';

这种方法当然会给命名空间带来问题。

现在我想要实现的是通过扩展他的方法来使用传单,以包含easybutton库提供的方法。

为了能够做类似的事情:

leaflet.easyButton('fa-globe', function(btn, map){
     helloPopup.setLatLng(map.getCenter()).openOn(map);
}).addTo( YOUR_LEAFLET_MAP );

所以问题是,我如何在 typescript 中导入第二个库,以便能够像上面的示例所示那样使用它?

【问题讨论】:

    标签: typescript ionic-framework import leaflet ionic3


    【解决方案1】:

    Leaflet.EasyButton 插件仅执行将一些新方法 (easyButton...) 和类 (Control.EasyButton...) 附加到 L Leaflet 全局命名空间的副作用。

    因此,您应该只需要导入它以获得副作用:

    import * as L from 'leaflet';
    import 'leaflet-easybutton';
    
    L.easyButton( /* ... */ );
    

    【讨论】:

    • 谢谢!我花了很长时间才完成一些简单的语法。
    【解决方案2】:

    我在尝试导入两个不同的键盘插件时遇到了类似的问题。一种解决方案是像这样命名其中一个插件:

    // imports
    import leaflet from 'leaflet';
    import * as easyButton from 'leaflet-easybutton';
    
    
    // usage
    leaflet //first plugin
    easyButton.leaflet //second plugin
    

    【讨论】:

    • 我试过了,但在你更正后我得到一个错误:Property 'leaflet' does not exist on type 'typeof "/Users/zeno/ticaccio/node_modules/leaflet-easybutton/src/easy-button"'. 尝试运行以下代码:`lfEasyButton.leaflet.easyButton('fa-globe', function(btn, map ){console.log("cicked");}).addTo(this.map);`
    • 不应该是easyButton.leaflet.easyButton而不是EasyButton.leaflet.easyButton?
    • 已更改。类型'typeof“/Users/zeno/ticaccio/node_modules/leaflet-easyButton/src/easy-button”'上不存在属性'leaflet'。似乎easyButton没有传单,因此没有扩展>现在我正在尝试更改模块的导入方式,但我没有运气
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-30
    • 2016-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多