In meinem eckigen Projekt kompiliert mit Closing Compiler benutze ich Firebase (separat geladen). Die externe Datei enthält:Einen Namespace als Parametertyp mit Closure Compiler verwenden
/**
* @namespace
*/
var firebase = {};
ich einige Funktionen, die die gesamte Feuerbasis als Parameter (zur Verfügung gestellt von AngularFire als "Firebase"
), aber ich kann irgendwie nicht seine Art richtig mit Anmerkungen versehen. Der Compiler sagt
WARNING - Bad type annotation. Unknown type firebase
* @param {firebase} Firebase
^
Wenn ich etwas von innen verwende, z. firebase.auth
oder firebase.database
, es funktioniert, aber das Objekt, das ich bekomme, ist der ganze Namespace.
Wie kann ich Closure Compiler akzeptieren den Namespace als Typ in @param
, um den Parameter zu verstehen? Ist es ein Fehler oder eine Funktion? (Ist das Schreiben eines Typedef für eine gute Problemumgehung?)
Also das ist etwas, das in dem neuen Typ System funktioniert? https://github.com/google/closure-compiler/wiki/Using-NTI-(new-type-interference) – Tom
Nein - neue Typ-Inferenz kann auf die Aliastypen schließen, aber es gibt immer noch keine Möglichkeit, explizit darauf zu verweisen der Typ eines Namespace oder Alias in einer Annotation. –