2015-12-07 42 views
5

Sto preparando il file externs per la libreria pixijs per funzionare con il compilatore di chiusura. L'unico problema che sto avendo finora è con i parametri dell'oggetto personalizzato. Ecco un breve esempio: fonteClosure Compiler EXTERNS per PIXI.js - annotazioni parametro oggetto personalizzato

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 

chiusura output del compilatore:

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 
    ^

Come possono queste annotazioni pixijs essere adattati alle annotazioni chiusura del compilatore?

Se non è possibile ottenere ciò tramite annotazioni, è possibile superarlo definendo un nuovo oggetto?

* @param {PIXI.TextStyleObject} style The style parameters 

e creazione di una definizione di oggetto TextStyleObject distinto in questo modo?

PIXI.TextStyleObject = {}; 
PIXI.TextStyleObject.font; 
PIXI.TextStyleObject.fill; 
PIXI.TextStyleObject.align; 

Qual è il modo corretto per risolvere questo problema?

risposta

1

Ti consigliamo di utilizzare un oggetto record per fare questo:

/** @param {{ 
*  font: string, 
*  fill: string, 
*  align: string 
*  }} object 
*/ 

Se vi trovate a riutilizzare lo stesso oggetto record più di una volta, è possibile utilizzare un typedef per alias esso:

/** @typedef {{ 
*  font: string, 
*  fill: string, 
*  align: string 
*  }} 
*/ 
var PixiStyleOptions; 

/** @param {PixiStyleOptions} object */ 
+0

È grandioso. Grazie per l'aiuto. –

+0

C'è un modo per specificare un valore predefinito, come in pixi c'è: [style.fill = 'black']? –

+0

No. Questo è solo per informazioni sul tipo. Non ha alcuna relazione con l'effettiva esecuzione del codice. –