2016-11-27 8 views
1

У меня есть функция-конструктор, Foo, которую я хочу, чтобы мои пользователи звонили без new. Например,Документирование функций конструктора без новых

const myFoo = Foo('bar'); 

для Foo определяется как,

function Foo(bar) { 
    if(!this) { return new Foo(bar); } 
    foo.bar = bar; 
    return this; 
} 

Как задокументировать это с JSDoc3? Если я использую @class (или @constructor) с шаблоном по умолчанию, вывод всегда использует new Foo(bar). Если я документирую Foo как только @function, ни один из его методов или свойств экземпляра не появится, просто сама функция.

Есть ли способ отделить определение класса от функции-конструктора? Или настроить вывод, чтобы не указывать new в конструкторе? @lends и @constructs обращаются к аналогичной необходимости, но для методов конструктора и экземпляра, определенных в литерале объекта.

ответ

0

Вы можете использовать @hideconstructor? , Как, например:

/** некоторые описание @class @hideconstructor */ функция Foo() ...

Тем не менее это не удастся в проверке типа проверки с машинописи через JSDoc. В этом случае, если вы не хотите, чтобы ваши пользователи никогда не использовали new, тогда вы должны задокументировать класс как ClassFoo с @hideconstructor и отдельно функцию Foo, которая @returns {ClassFoo}