循环类型引用在TypeScript中是一件不好的事吗?

问题描述

我在下面遇到了一些代码片段,其中包含对类型引用的循环导入依赖。

// Foo.ts
import { Bar } from './Bar';
export interface Foo {
  isBarOK: (bar: Bar) => boolean;
}

// Bar.ts
import { Foo } form './Foo';
export class Bar {
  protected readonly foo: Foo;
}

这是简化版本,但可以解释我遇到的情况。 tsc编译代码没有问题,但是我从import/no-cycle ESLint规则得到了警告。我们可以看到FooBar互相引用进行输入。这是不好的做法吗?这意味着什么?

解决方法

纯打字稿文件不会输出到您的捆绑软件中,因此您可以放心地忽略它。

但是要小心使用javascript文件,循环导入可能会使摇晃的树变得混乱