2015-12-07 15 views
5

Ich bereite externe Datei für pixijs Bibliothek mit Closure-Compiler zu arbeiten. Das einzige Problem, das ich bisher habe, ist mit benutzerdefinierten Objektparametern. Hier ist ein kurzes Beispiel:Closure Compiler EXTERNS für PIXI.js - benutzerdefinierte Objekt Parameter Anmerkungen

pixi.js Quelle:

/** 
* 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 

Schließung Compiler Ausgabe:

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 
    ^

Wie können diese pixijs Anmerkungen Schließung Compiler Anmerkungen angepasst werden?

Wenn es keine Möglichkeit gibt, dies durch Anmerkungen zu erreichen, könnte ich dies durch Definition eines neuen Objekts überwinden?

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

und eine separate TextStyleObject Objektdefinition wie so erstellen?

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

Was ist der richtige Weg, um dieses Problem zu lösen?

Antwort

1

Sie wollen ein Rekord-Objekt verwenden, dies zu tun:

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

Wenn Sie sich erneut mit dem gleichen Datensatz Objekt mehr als einmal finden Sie eine typedef verwenden können, um es alias:

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

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

Das ist großartig. Danke für Ihre Hilfe. –

+0

Gibt es eine Möglichkeit, einen Standardwert anzugeben, wie in Pixi: [style.fill = 'black']? –

+0

Nein. Dies ist nur für Typinformationen. Es hat keinen Einfluss auf die tatsächliche Codeausführung. –