我的代码中有一些想要的循环依赖项。 让我提供一个例子说明我的意思。
文件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选项仅附加到一个文件?
答案 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
常量中将具有正确的值