我是打字稿的新手,我想了解如何在两种类型之间设置循环引用.引用不必是完整的代码引用,只需要接口,但接口定义在单独的文件中.例如,假设我有两个接口:Parent和Child.它们是双重关联的,因此父母有一个孩子的集合,每个孩子都有父母的参考(如下所示).如何设置导入或依赖项,以便可以在单独的文件中定义它们?
interface Parent {
children: Child[]
}
interface Child {
parent: Parent
}
Run Code Online (Sandbox Code Playgroud) 我正在对从服务器发送到我的 Angular 应用程序的打字稿中的数据进行建模。AnOpportunity具有forms包含Form[]对象数组的属性。AForm有一个parent属性,其中可能包含一个Opportunity。为了解决这个类型,它定义文件Opportunity导入Form和定义文件Form导入Opportunity。这会创建一个循环依赖警告。
我发现了几个处理循环依赖的先前 SO 问题(这里,这里),但在每种情况下,它们都在处理 javascript 代码中的循环依赖。在这种情况下,循环依赖只与 typescript 类型有关,编译后将不存在。有没有办法在文件中包含一个类型,同时避免这种循环依赖问题?到目前为止,我还没有发现任何东西。
对于这个问题,我可以想到两种解决方案:
Form的接口Opportunity文件/中Opportunity的接口Form文件。还有其他/更好的解决方案吗?谢谢!
我似乎找到了答案(出于某种原因,它在问题列表中的位置真的很靠后)。这个答案提出了两种可能性
创建一个单独的定义文件(这似乎涉及重新创建Opportunity和Form类接口,因此不会比上面的选项 #2 更好)。
使用导入,这是我已经在做的(并且导致循环依赖警告)。
有没有办法导入刚才一类的相关接口?
只是要清楚,目前Opportunity和Form看起来像这样:
// opportunity.ts
import { Form } from '....../form'
export class …Run Code Online (Sandbox Code Playgroud)