Как правильно импортировать / включать дополнения модуля машинописи в угловую библиотеку или приложение? - PullRequest
0 голосов
/ 20 сентября 2019

Я нашел много примеров того, как настроить файлы расширения модулей для добавления функциональности в модуль node_module, но я немного запутался, как их следует включать в компиляцию машинописного текста.Должен ли я просто импортировать файл, который выполняет увеличение в верхней части main.ts (или public_api.ts для библиотеки), например так:

import './moduleaugmentationfile';

Или есть какой-то другой стандартный способ сделать эту добавленную функциональностьдоступно в приложении.

Редактировать:
Это - пример приложения.Пример расширения модуля находится в moduleaugmentation.ts.Я добавил комментарий в main.ts, который объясняет мое замешательство относительно того, как лучше всего включить расширение модуля.

1 Ответ

0 голосов
/ 20 сентября 2019

Ваш пример выглядит хорошо, это также правильный способ дополнить модуль .

Расширение модуля = уже есть объявление типа данного пакета npm, предоставленное сопровождающими пакета, которое вы хотите расширить.Здесь важно иметь export / import на верхнем уровне для назначения файла в области видимости модуля, иначе компилятор будет ожидать объявление окружающего модуля (нет существующего определения типа пакета).

Нет необходимости вручную включать определения типов вручную (я думаю, в прошлом это можно было сделать с помощью директив тройной косой черты , вы не используете importдля глобальных деклараций).В настоящее время компилятор использует Автоматическое включение (хотя я не совсем уверен относительно различных конфигураций Angular):

Если "files" и "include" оба не указаны, компиляторпо умолчанию включаются все файлы TypeScript (.ts, .d.ts и .tsx) в каталог и подкаталоги, за исключением тех, которые исключены с использованием свойства exclude.

Последний совет по использованию RxJS:Вы можете импортировать Observable непосредственно из корня пакета (см. здесь для примера в документации по RxJS v6), например,

import { Observable } from "rxjs"

, поэтому вам не нужно полагаться навнутренняя комплектация.

import {Observable} from "rxjs"

declare module "rxjs" {
  interface Observable<T> {
    subscribeAndLog: (a: string) => void
  }
}

Ура, надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...