Я пытаюсь реализовать метод в суперклассе, который должен быть доступен для использования, но не изменен, в подклассах. Рассмотрим это:
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
}
}
Очевидно, что это проблематично, потому что я должен гарантировать, что никакой подкласс никогда не реализует universalBehavior()
чем-либо другим, кроме вызова super.universalBehavior()
.