jsdo c не документирует никакого специального синтаксиса для представления типа, расширяющего класс.
С одной стороны, вы можете получить, просто используя ParentClass
в качестве type (подразумевая, что этот интерфейс является тем, что возвращается) - учитывая, что jsdo c действительно инструмент для документирования, а не для строгой проверки типов (и JavaScript методы чаще, чем просто ожидают определенного (типизируемого утилитой) интерфейса вместо наложения instanceof
чеков или тому подобного).
Однако вы можете дать более точное определение типа возвращаемого значения, например, с помощью тега @augments
(также доступного в jsdo c как @extends
и требуется как таковое в Closure ):
class ParentClass {
// ...
/**
* Creates a child class.
*
* @param {string} type - the type.
*
* @returns {ChildClass} the resulting class.
*/
static createChildClass(type) {
/**
* @class ChildClass
* @augments ParentClass
*/
return class extends ParentClass {
constructor() {
super(type);
}
};
}
}
(IIR C, хотя jsdo c не документирует использование скобок с @extends
, как, очевидно, требует Closure, я думаю, что он может работать с квадратными скобками.)
Обратите внимание, что это все же немного хак, поскольку мы не документируем, что конкретный экземпляр возвращается, но мы хотим документировать, что весь класс возвращается. См. https://github.com/jsdoc/jsdoc/issues/1349 для невыполненной проблемы. (TypeScript позволяет typeof
с типами, например, @returns {typeof ChildClass}
.)