Как построить библиотеки с двухсторонними одноранговыми зависимостями в машинописи?

У меня есть две библиотеки, одна, которая делает запросы, а другая, которая ведет журнал. Обе библиотеки требуют настройки от клиента, который всегда будет использовать обе из них.

Библиотека запросов выполняет обращения к библиотеке журналов повсюду, и в ней она указана как одноранговая зависимость.

Библиотека журналов имеет одну функцию, которая вызывает метод в библиотеке запросов для вывода журналов. Этот метод свободен от вызовов журнала, чтобы избежать бесконечных циклов. В библиотеке журналов также есть библиотека запросов, указанная в качестве одноранговой зависимости.

Когда я пытаюсь бежать tsc в библиотеке запросов он жалуется, что не может импортировать сам. Когда он импортирует библиотеку журналов, библиотека журналов пытается импортировать библиотеку запросов, которую невозможно найти. Очевидно, я не хочу публиковать каждую версию библиотеки запросов с предыдущей версией, вложенной в нее, поэтому установка старой версии не будет работать.

Я попытался динамически загрузить библиотеку запросов в библиотеке журналов с помощью машинописи await import(), но, видимо, все еще пытается открыть библиотеку запросов, вызывающую ошибку.

Каков наилучший способ реализации двусторонних библиотечных отношений?

1 ответ

двусторонние равноправные зависимости в машинописи?

Вы не Не в JavaScript, не в TypeScript. Круговые зависимости не хороши.

исправлять

Изолировать круглость в третьей библиотеке.

До:

A -> <- B 

После:

A -> Common
B -> Common 

Если вы не можете думать о Common, тогда A & B действительно должно быть 1 (вместо 2)

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