2017-02-22 28 views
0

Пример того, что я ищу, чтобы документ был бы следующий:Можно ли указать переопределения функций в JSDoc?

/** 
* @return {boolean} 
*/ 
Contains(rectangle_or_x, y, tolerance) { 
    if (rectangle_or_x instanceof Rectangle) { return ((rectangle_or_x.X >= this._x) && (rectangle_or_x.Y >= this._y) && (rectangle_or_x.Right <= this._right) && (rectangle_or_x.Bottom <= this._bottom)); } 
    if ((tolerance === undefined) || (tolerance === null) || (!Rectangle._isNumeric(tolerance))) { 
     if ((rectangle_or_x < this._x) || (y < this._y) || (rectangle_or_x > this._right) || (y > this._bottom)) { return (false); } 
    } else if (((rectangle_or_x + tolerance) < this._x) || ((y + tolerance) < this._y) || ((rectangle_or_x - tolerance) > this._right) || ((y - tolerance) > this._bottom)) { return (false); } 
    return (true); 
} 

В этом есть 3 возможных вызовов, один из которых может быть просто игнорировали, поскольку она основана вокруг дополнительного tolerance аргумента, но основание два перекрытие в эксклюзивном порядке:

Contains(Rectangle rectangle_or_x) 
Contains(Number rectangle_or_x, Number y[, Number tolerance]) 

Учитывая различные типы (я знаю, что JavaScript является не-набрано, но, насколько пример обеспокоен есть категорические типы, участвующие) является возможностью создавать отдельные наборы от @param значений с JSDoc (в основном для intellisense i n WebStorm, но теоретически также для документации по линии.)

ответ

1

Невозможно указать эксклюзивные наборы JSDocs.

Вы можете попробовать что-то вроде:

/** 
* @param {Rectangle|Number} rectangle_or_x 
* @param {Number=} y 
* @param {Number=} tolerance 
* @return {boolean} 
*/ 
Contains(rectangle_or_x, y, tolerance) {}