2016-09-29 5 views
1

Ich versuche, ExtJS 6.2.0 mit Google Closure Compiler zu kompilieren. Es gibt Anmerkungen wie folgt in der extjs Quellcode:Google Closure Compiler erkennt keine Typannotation

* @param {Ext.data.TreeModel[]} records An array of records.

Closure Fehler aus, da es nicht diese Art von Anmerkung nicht erkennt. Der Fehler sieht wie folgt aus:

extjs-6.2.0/build/ext-all-debug.js:248792: ERROR - Bad type annotation. expecting a variable name in a @param tag. See https://github.com/google/closure-compiler/wiki/Bad-Type-Annotation for more information. 
    * @param {Ext.data.TreeModel[]} data.records An Array of Models representing the 

Ich sehe nicht unbedingt eine Lösung in der URL zur Verfügung gestellt. Es gibt auch eine Vielzahl von Typen in ExtJS wie diese, von denen ich vermute, dass der Compiler Probleme damit hat.

Gibt es hier einen trivialen Workaround? Ich könnte --jscomp_error checkTypes aus der Compilation entfernen, aber ich würde es lieber auf die richtige Weise machen.

Antwort

2

Die von Ihnen angezeigte Anmerkung ist nicht mit dem Google-Abschlusscompiler kompatibel. Stattdessen wäre es

* @param {Array<Ext.data.TreeModel>} records An array of records. 

geschrieben Ich vermute, sie JSDoc verwenden, da die Anmerkung Ext.data.TreeModel[] mit JSDoc kompatibel ist, siehe http://usejsdoc.org/tags-type.html.

Der Closure Compiler hat mit der JSDoc-Syntax begonnen, aber die beiden sind in den letzten fünf Jahren ein wenig divergiert. Die Abschlusscompiler-Annotationen sind hier beschrieben: https://github.com/google/closure-compiler/wiki/Annotating-JavaScript-for-the-Closure-Compiler (scrollen Sie zu Type Expressions am unteren Rand).

Es könnte möglich sein, einige Anmerkungen zu ändern, um sie mit dem Abschlusscompiler kompatibel zu machen. Aber es gibt einige Annahmen darüber, wie der Code funktioniert, der mit ADVANCED-Modus des Compilers verwandt wird, dem dieser Code möglicherweise nicht folgt. Siehe a recent thread about a similar question.

+0

Der Thread, den Sie verknüpfen, scheint kein gültiger Link zu sein. – randombits

+0

Ich habe den Link geändert, sollte jetzt funktionieren. – owler

Verwandte Themen