我正在尝试在父类(super class)中实现一种方法,该方法应该可以在子类中使用,但不可更改。考虑一下:
export abstract class BaseClass {
universalBehavior(): void {
doStuff(); // Do some universal stuff the same way in all sub classes
specializedBehavior(); // Delegate specialized stuff to sub classes
}
protected abstract specializedBehavior(): void;
}
我的意图是 BaseClass 的任何子类不仅可以自由省略 universalBehavior()
的实现,甚至不允许提供实现。这在 TypeScript 中(还)不可能吗?当我在我的子类中省略实现时,Intellisense 会提示。我能做的最好的事情就是:
export class SubClass extends BaseClass {
universalBehavior(): void {
super.universalBehavior();
}
specializedBehavior(): void {
// sub class' implementation
}
}
显然这是有问题的,因为我必须确保没有子类通过调用 super.universalBehavior()
以外的任何方式实现 universalBehavior()
。
最佳答案
不,在撰写本文时还没有。有这样一个关键字的提案仍在考虑中,但可能会或可能永远不会实现。
参见:
关于inheritance - 在 TypeScript 中是否有等同于 "sealed"或 "final"的东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42814649/