Закрытие компилятора EXTERNS для PIXI.js - пользовательские аннотации параметров объекта
Я готовлю externs файл для библиотеки pixijs для работы с компилятором закрытия. Единственная проблема, с которой я столкнулся на данный момент, связана с пользовательскими параметрами объекта. Вот короткий пример:
pixi.js источник:
/**
* Set the style of the text
*
* @param [style] {object} The style parameters
* @param [style.font='bold 20pt Arial'] {string} The style and size of the font
* @param [style.fill='black'] {string|number} A canvas fillstyle that will be used on the text eg 'red', '#00FF00'
* @param [style.align='left'] {string} Alignment for multiline text ('left', 'center' or 'right'), does not affect single line text
закрытие вывода компилятора:
lib/pixi-externs.js:3266: WARNING - Parse error. invalid param name "style.font"
* @param [style.font='bold 20pt Arial'] {string} The style and size of the font
^
lib/pixi-externs.js:3266: WARNING - Bad type annotation. missing closing ]
* @param [style.font='bold 20pt Arial'] {string} The style and size of the font
^
lib/pixi-externs.js:3267: WARNING - Parse error. invalid param name "style.fill"
* @param [style.fill='black'] {string|number} A canvas fillstyle that will be used on the text eg 'red', '#00FF00'
^
lib/pixi-externs.js:3268: WARNING - Parse error. invalid param name "style.align"
* @param [style.align='left'] {string} Alignment for multiline text ('left', 'center' or 'right'), does not affect single line text
^
Как эти аннотации pixijs можно адаптировать для закрытия аннотаций компилятора?
Если нет способа добиться этого с помощью аннотаций, могу ли я преодолеть это путем определения нового объекта?
* @param {PIXI.TextStyleObject} style The style parameters
и создание отдельного определения объекта TextStyleObject, как это?
PIXI.TextStyleObject = {};
PIXI.TextStyleObject.font;
PIXI.TextStyleObject.fill;
PIXI.TextStyleObject.align;
Как правильно решить эту проблему?
1 ответ
Решение
Вы хотите использовать объект записи, чтобы сделать это:
/** @param {{
* font: string,
* fill: string,
* align: string
* }} object
*/
Если вы обнаружите, что повторно используете один и тот же объект записи более одного раза, вы можете использовать typedef для его псевдонима:
/** @typedef {{
* font: string,
* fill: string,
* align: string
* }}
*/
var PixiStyleOptions;
/** @param {PixiStyleOptions} object */