Skip to content

forwardRef

在下面的例子当中 Person 先于 Father 声明,但是又依赖于 Father,这种情况下,你需要使用 forwardRef 来封装一次 Father,否则 redi 在记录依赖关系时, Father 的值会是 undefined。如果这种情况确实发生了,redi 会报错。

import { Self, SkipSelf } from '@wendellhu/redi'
class Person {
constructor(
@Self() @Inject(forwardRef(() => Father)) private readonly father: Father,
@SkipSelf()
@Inject(forwardRef(() => Father))
private readonly grandfather: Father
) {}
}
class Man extends Person {}
class Father extends Man {
changeDiaper(): void {}
}

💡
这和 TypeScript 如何编译 class 有关。在装饰器执行时,Father 类所对应的标识符的值是 undefined