【发布时间】:2018-04-28 22:14:39
【问题描述】:
以下是使用 TypeScript 语法取自 angular framework 的示例代码(多态),
export abstract class AbstractControlDirective {
...
}
AbstractControlDirective 子类型
export abstract class NgControl extends AbstractControlDirective {
...
}
export abstract class ControlContainer extends AbstractControlDirective {
...
}
export declare abstract class ControlContainer extends AbstractControlDirective {
...
}
export declare abstract class NgControl extends AbstractControlDirective {
...
}
NgControl 子类型
export class NgModel extends NgControl implements OnChanges, OnDestroy {
...
}
export class FormControlDirective extends NgControl implements OnChanges {
....
}
export class FormControlName extends NgControl implements OnChanges, OnDestroy {
...
}
export declare class FormControlDirective extends NgControl implements OnChanges {
...
}
export declare class FormControlName extends NgControl implements OnChanges, OnDestroy {
...
}
export declare class NgModel extends NgControl implements OnChanges, OnDestroy {
...
}
一般来说,有很多情况会遇到新的需求,在类层次结构的中间层添加明显的超类型,这会在子类型中注入破坏,除非使用某种设计模式。使用设计模式可以使类层次结构不易出错,但会破坏层次结构。
为了避免这个问题,我们可以在不使用extends 关键字的情况下保持这个层次结构吗? TypeScript 被结构化类型化...
【问题讨论】:
-
我能想到的只是使用接口或
implementing,而不是扩展抽象类。您认为可以防止这种情况的设计模式是什么?我很想看看他们
标签: angular typescript design-patterns polymorphism structural-typing