使用打字稿的静态类继承的 super 等价物

Vad*_*est 4 inheritance static typescript

我想知道是否有等价super于从孩子调用静态方法。因为到目前为止我只能从孩子那里调用公共非静态方法,使用super.

我想我将不得不使用父级的全名来调用静态方法,但无论如何我都在问,到目前为止在打字稿论坛上没有发现任何有用的信息......

Wir*_*rie 5

与许多编程语言(例如 C#)一样,TypeScript 无法在static没有直接命名调用的情况下调用基类方法。

您需要使用整个类名来调用静态方法。根据功能的性质,您可能只想考虑使功能非静态。

有趣的是,用于访问基类的变量在技术上是可用的,但编译器会抛出有关变量使用不当的警告。

你今天可以:

static MyMethod1():void {
   _super.MyMethod1();
}
Run Code Online (Sandbox Code Playgroud)

产生:

var B = (function (_super) {
    __extends(B, _super);
    function B() {
        _super.apply(this, arguments);
    }
    B.myMethod1 = function () {
        _super.myMethod1();
    };
return B;
})(A);
Run Code Online (Sandbox Code Playgroud)

这会生成允许访问超类的有效 JavaScript 代码(但是,它确实会生成警告,我不建议这样做)。

  • 注意:使用我当前版本的 typescript (2.3.2),我可以在静态方法中使用 `super`。 (2认同)