【问题标题】:Supress circular-dependency warning for single files抑制单个文件的循环依赖警告
【发布时间】:2019-06-25 17:07:41
【问题描述】:

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

文件 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 module 模式:

文件 include.ts

export {ClassA} from './a';

文件 b.ts

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

export const NAMES = [nameOf(ClassA)];

但没有成功。是否有任何其他模式可以提供帮助,或者是否有可能将 showCircularDependencies 选项附加到一个文件?

【问题讨论】:

  • 尝试使用export const NAMES = [nameof<ClassA>()]

标签: angular typescript circular-dependency


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2018-11-20
    • 2020-03-04
    • 2016-08-03
    • 2019-11-30
    • 1970-01-01
    • 2019-08-01
    • 2021-01-08
    • 2018-05-08
    • 1970-01-01
    相关资源
    最近更新 更多