typescript legacy js lib扩展问题

时间:2017-09-07 15:05:55

标签: angular typescript types

我需要一些导入帮助,我正在使用定义类型

的@type / leaflet
export namespace Icon {
    interface DefaultIconOptions extends BaseIconOptions {
        imagePath?: string;
    }

    class Default extends Icon<DefaultIconOptions> {
        static imagePath?: string;
        constructor(options?: DefaultIconOptions);
    }
}

现在,我想使用以下扩展Icon行为的libreray:https://www.npmjs.com/package/leaflet-fa-markers 问题是它是普通的JS而且@types中没有定义类型... node_modules /小叶-FA-标记/ L.Icon.FontAwesome.js

L.Icon.FontAwesome = L.Icon.extend({

    options: {
        popupAnchor: [0, -50]
    },

    createIcon: function () {

        var div = document.createElement('div');
...

到目前为止,我已经在.angular-cli.json中导入了js和css,但是无法弄清楚如何在我的服务中导入它...到目前为止我已经导入了js lib

import 'leaflet-fa-markers';
//...
        let marker = new L.Marker([ lat, lng], {
          icon: L.icon.fontAwesome({
            iconClasses: 'fa fa-info-circle', // you _could_ add other icon classes, not tested.
            markerColor: '#00a9ce',
            iconColor: '#FFF'
          }),
          draggable: true});

但我收到错误:

src/app/_services/canimap.service.ts (99,24): Property 'fontAwesome' does not exist on type '(options: IconOptions) => Icon<IconOptions>'.

1 个答案:

答案 0 :(得分:0)

我发现的是修改代码以使其正常工作

  1. 转换typescript文件中的JS文件
  2. 添加导入

    从'传单'导入{Icon,IconOptions}; 从'传单'导入*为L;

    导出类FontAwesomeIcon扩展Icon {     //在这里添加你的JS代码 }

  3. 添加index.ts文件:

    从'./fontAwesomeIcon'导出{FontAwesomeIcon,FontAwesomeOptions};

  4. 我在这里发布了代码:https://github.com/mylen/ngx-leaflet-fa-markers