inheritance - 在 TypeScript 中是否有等同于 "sealed"或 "final"的东西?

标签 inheritance typescript final typescript2.0 sealed

我正在尝试在父类(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/

相关文章:

java - 我想将最终变量初始化为函数

java - 在 Java 中,可以从构造函数助手初始化最终字段吗?

c++ - 如何让 Doxygen 忽略继承关系?

java - 从子类设置父类(super class)中字段的类型 (Java)

c++ - 需要比较字符串的某些元素

javascript - 未能 "dynamically"导入 date-fns/locale 库 - TypeScript 给出尝试导入错误

java - 多线程环境下初始化前读取非final字段的代码演示

scala - 继承和特征

javascript - typescript :类型 'Promise<void>' 不可分配给类型 'void | Destructor'

node.js - 在 Bot Framework 中扩展可识别的输入以进行确认提示