Supress单个文件的循环依赖警告

时间:2019-06-25 17:07:41

标签: angular typescript circular-dependency

我的代码中有一些想要的循环依赖项。 让我提供一个例子说明我的意思。

文件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)];

这将导致循环依赖性警告。但是,在NAMES常量中既没有注入也没有实例化ClassA。这样看来合法。

我知道 showCircularDependencies 选项。但是我不想在全球范围内开始。

我还尝试了 include模块模式:

文件include.ts

export {ClassA} from './a';

文件b.ts

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

export const NAMES = [nameOf(ClassA)];

但是没有成功。是否还有其他模式可以帮助您,或者是否可以将showCircularDependencies选项仅附加到一个文件?

1 个答案:

答案 0 :(得分:0)

您的文件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常量中将具有正确的值