小编InP*_*ess的帖子

Typescript/Javascript 循环依赖:类扩展值未定义不是构造函数或 null

问题

\n

您好,\n以下代码示例会引发错误:

\n
TypeError: Super constructor null of SecondChild is not a constructor\n    at new SecondChild (<anonymous>:8:19)\n    at <anonymous>:49:13\n    at dn (<anonymous>:16:5449)\n
Run Code Online (Sandbox Code Playgroud)\n

目前我正在尝试了解问题到底是什么以及如何在 typescript/javascript 中实现工厂模式。有几种行为我不太理解:

\n
    \n
  1. 如果我删除代码的第二个子项,则一切正常,除非我交换子项导出的 index.ts 文件中导出语句的顺序。
  2. \n
  3. 如果我将文件 child.ts 和 secondary-child.ts 合并到一个定义这两个类的文件中,则异常也消失了
  4. \n
\n
    \n
  • 该错误是否与循环依赖相关?如果是这样,那么 typescript/javascript 中循环依赖背后的问题到底是什么?
  • \n
  • 有人可以向我解释代码示例的行为吗?
  • \n
\n

如果我实现父类而不使用类型“this”与工厂方法结合使用,则可以防止错误,但它看起来相当方便。抽象方法重复背后的目标是它返回一个子类实例。我可以在每个子类中实现它,但在我的现实世界项目中,复杂性要高得多。

\n

项目结构:

\n
src/\n  child.ts\n  factory.ts\n  index.ts\n  parent.ts\n  main.ts\n  second-child.ts\n
Run Code Online (Sandbox Code Playgroud)\n

文件内容

\n

主要.ts:

\n
TypeError: Super constructor null of SecondChild is not a constructor\n    at new …
Run Code Online (Sandbox Code Playgroud)

javascript circular-dependency factory-pattern typescript

2
推荐指数
1
解决办法
4950
查看次数