JSDoc文档最终方法

JSDoc document final method

有没有办法使用 JSDoc 在 JS 中记录 final 方法。

Java 中的最后一个方法是无法覆盖的方法。

我在 JSDoc 网站上找不到任何选项。

看来你不能,因为 a search of the JSDoc documentaton for final 没有结果。

这并不奇怪,因为您无法可靠地拥有 JavaScript 中的最终方法。因此,如果一个方法不被覆盖很重要,您可能不得不求助于在其描述中记录这一点。尽管如此,JSDoc 还是有可能提供一种方法来注释工具,但它似乎没有。

这里有一个 不可靠的 方法在 JavaScript 中有一个 final 方法:

class Base {
    constructor() {
        if (this.finalMethod !== Base.prototype.finalMethod) {
            throw new Error(`You must not override 'finalMethod' in your subclass.`);
        }
    }
    
    finalMethod() {
        console.log("This is the pseudo-final method");
    }
}

class Derived extends Base {
    finalMethod() {
        console.log("This is the overridden method");
    }
}

const d = new Derived(); // Throws error

但这可以通过多种方式轻松克服:

  • 等到你的子类构造函数已经调用超类构造函数时再创建方法。
  • Return 未使用超类构造函数创建的对象(例如,return Object.assign(Object.create(this), { finalMethod() { /*...*/ } });(尽管现在我想起来了,这实际上只是执行上面#1 的不同方法。)
  • Return 一个代理。
  • 在不调用超类构造函数的情况下创建子类实例( 推荐——但是,none 其中是)
  • ...可能还有其他人...