在 TypeScript 中循环类型引用是一件坏事吗?
Is circular type reference a bad thing to do In 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 规则中得到警告。我们可以看到 Foo
和 Bar
相互引用以进行键入。这是一种不好的做法吗?这意味着什么影响?
纯 typescript 文件不会输出到您的包中,因此您可以放心地忽略它。
但要小心 javascript 文件,循环导入可能会搞乱 tree shaking
我遇到了下面的代码片段,其中包含对类型引用的循环导入依赖。
// 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 规则中得到警告。我们可以看到 Foo
和 Bar
相互引用以进行键入。这是一种不好的做法吗?这意味着什么影响?
纯 typescript 文件不会输出到您的包中,因此您可以放心地忽略它。
但要小心 javascript 文件,循环导入可能会搞乱 tree shaking