【发布时间】:2021-09-01 21:27:25
【问题描述】:
有没有办法在 JS 中使用 JSDoc 记录最终方法。
Java 中的 final 方法是不能被覆盖的。
我在 JSDoc 网站上找不到任何选项。
【问题讨论】:
标签: javascript jsdoc
有没有办法在 JS 中使用 JSDoc 记录最终方法。
Java 中的 final 方法是不能被覆盖的。
我在 JSDoc 网站上找不到任何选项。
【问题讨论】:
标签: javascript jsdoc
看来你不能,因为a search of the JSDoc documentaton for final 没有结果。
这并不奇怪,因为您不能在 JavaScript 中可靠地拥有 final 方法。因此,如果一个方法不被覆盖很重要,您可能不得不求助于在其描述中记录它。尽管如此,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 Object.assign(Object.create(this), { finalMethod() { /*...*/ } });(虽然现在我想起来了,这实际上只是上面 #1 的不同方式。)【讨论】:
@private(最近添加到 JS)和 @interface,尽管静态成员也可能有一个未记录的标签。