Подавить предупреждение о циклической зависимости для отдельных файлов - PullRequest
0 голосов
/ 25 июня 2019

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

Файл a.ts

import {NAMES} from './b';

export class ClassA {
  constructor() { 
   console.log(NAMES);
  }
}

Файл b.ts

import {ClassA} from './a';
import {nameOf} from './extensions';

export const NAMES = [nameOf(ClassA)];

Это приводит к циклическому предупреждению о зависимости.Но ClassA не вводится и не создается в константе NAMES.Так что это кажется законным.

Мне известна опция showCircularDependencies .Но я не хочу запускать его глобально.

Я также пробовал шаблон включения модуля :

Файл include.ts

export {ClassA} from './a';

Файл b.ts

import {ClassA} from './include';
import {nameOf} from './extensions';

export const NAMES = [nameOf(ClassA)];

Но безуспешно.Существуют ли другие шаблоны, которые могут помочь, или есть возможность прикрепить опцию showCircularDependencies только к одному файлу?

1 Ответ

0 голосов
/ 25 июня 2019

Ваш файл a.ts зависит от b.ts, а файл b.ts зависит от a.ts, и именно поэтому вы сталкиваетесь с предупреждением о круговой зависимости.

Существует несколько способов решения этого предупреждения.

Одним из решений было бы переместить создание NAMES в a.ts и избавиться от b.ts.

a.ts:

import {nameOf} from './extensions';
export class ClassA {
  constructor() { 
    console.log(NAMES);
  }
}
const NAMES = nameOf(ClassA);

Поскольку объект ClassA будет инициирован после выполнения строки const NAMES = nameOf(ClassA);, конструктор classA будет иметь правильное значение в NAMES constant

...