Как импортировать модуль, который расширяет другой в том же пространстве имен

Простой дорожный блок. Мне нужно использовать Leaflet и плагин Leaflet-Draw в некоторых моих сервисах.

Я не знаю, как импортировать весь модуль (ядро и плагин)

// the core
import * as L from 'leaflet';
// extension
import 'leaflet-draw';

export class LeafletConsumerService {}

У меня есть решение, которое мне не очень нравится. Я загружаю библиотеки, жестко связывая их index.html и потребитель просто имеет ссылку на объявление файлов

/// <reference path="../typings/index.d.ts" />

export class LeafletConsumerService {}

Разве нет другого способа сделать это? Есть ли способ импортировать один файл, который должен просто вызвать побочный эффект на уже загруженный модуль?

1 ответ

Хорошо, быстрое и грязное решение. Этот ответ работает, если вы начинаете свой проект с быстрого запуска репо. Идти к system.config.extras.js и расширите свою конфигурацию как таковую:

System.config({
    map: {
        'leaflet': 'npm:leaflet/dist/leaflet.js'
    },
    packages: {
        leaflet: {
            defaultExtension: 'js'
        },
    }
});

это означает, что теперь мы можем импортировать буклет как таковой

import * as L from 'leaflet';

и добавьте наши соответствующие файлы расширения, как описано

import 'your-leaflet-extension';

Не забудьте расширять информацию о типах для ваших расширений (через файл наборов или сделайте свой собственный)

Другие вопросы по тегам