需要多重继承时的正确方法(TypeScript)

Correct approach when multiple inheritance is needed (TypeScript)

首先 mixins 不是最好的解决方案,因为我的接口很大,我想避免编写空的实现。

我正在寻找的是哪种方法(技术)最适合多重继承。我的问题是钻石继承(是的,我读过钻石问题)。

//                   -----------------------
//                   |         Edit        |
//                   -----------------------
//                  /                  \
//                 /                    \
//                /                      \
//    -----------------------         -----------------------
//    |     DataSetEdit     |         |        OEdit        |
//    -----------------------         -----------------------
//                    \                    /
//                     \                  /
//                      \                /
//                    -----------------------
//                    |     ODataSetEdit    |
//                    -----------------------

逻辑很简单。

在一个项目中我使用 DataSetEdit,而在另一个项目中我总是使用 ODataSetEdit。所以在使用ODataSetEdit的项目中,我只需要复制DataSetEdit功能即可。

我不想在 DataSetEdit 和 ODataSetEdit 中重复代码。 我在想我是否可以用以下方法解决这个问题:

ODataSetEdit 应该扩展 OEdit 但能够使用在 DataSetEdit 中添加的功能。

我认为class结构是逻辑的,如何在我的设计中避免多重继承的需要?我确定这是与 TypeScript 无关的常见问题。

how can I avoid need for multiple inheritance in my design

将逻辑从 OEdit 移到函数/变量中(随意使用命名空间:https://basarat.gitbooks.io/typescript/content/docs/project/namespaces.html 将它们收集成有意义的东西),然后在 OEdit 和 ODataSetEdit 之间共享它们。

更多

从根本上说,您需要将逻辑移出到至少一个直系子级和孙级可以访问的位置。没有两种解决方法。