使用Typescript,如何解决2个不同文件的2个类需要互相引用 来进行类型检查

新手上路,请多包涵

问题说明

在看VSCode源码时发现存在,
A类里会创建B类
B类方法需要用A类实例作参数,
ts在声明参数或变量需要定义类型,
于是就构成了需要互相引用的问题。

不过VSCode通过打包解决这个问题,导入时使用绝对路径。
但是会产生一个新的问题,编辑器无法进行追踪,也就没有代码提示了

那么是否存在什么方法既能解决互相引用,又能解决编辑器提示的问题呢?

例子

这个例子不是很恰当,可以通过其他的结构来实现同样的功能避免这种问题,但这里主要是为了说明我想怎么引用。

/* parent.ts */
import { Child } from './child'

export class Parent {
    firstName: string
    lastName: string
    child: Child
    constructor(firstName: string, lastName: string, childfirstName: string) {
        this.firstName = firstName
        this.lastName = lastName
        this.child = new Child(childfirstName)
    }
    getChildName() {
        return this.child(this)
    }
}
/* child.ts */
import { Parent } from './parent'

export class Child {
    firstName: string
    constructor(firstName: string) {
        this.firstName = firstName
    }
    getName(parent: Parent) { // 这里引用Parent做类型检查
        return this.firstName + ' ' + parent.lastName
    }
}
/* test.ts */
import { Parent } from './parent'

const parent = new Parent('Jonathan', 'Joestar', 'George')
console.log(parent.getChildName()) // George Joestar
阅读 7.4k
1 个回答

大致理解, 建议在子类中的constructor中引用父类实例, 余下操作在实例上进行,应该可以解决问题

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
logo
Microsoft
子站问答
访问
宣传栏