GoogleClosureコンパイラがコード内のシンボルを最適化する方法が大好きです。ただし、構成オブジェクトをパラメーターとして受け取るパブリックのエクスポートされた関数を定義する良い方法は見つかりませんでした。このコードスニペットについて考えてみましょう。
goog.provide('foo');
goog.require('goog.dom');
/** @typedef {{
* id : string,
* clazz : string
* }}
*/
foo.config;
/**
* Does some neat stuff
* @param {foo.config} config
*/
foo.myFoo = function(config) {
var el = goog.dom.getElement(config.id);
goog.dom.classes.add(el, config.clazz);
}
goog.exportSymbol('foo.myFoo', foo.myFoo);
ここで、このスクリプトをロードし、次のようにmyFooを呼び出したいとします。
<script type="text/javascript">
foo.myFoo({
id: 'unique-id',
clazz: 'pretty'
});
</script>
コンパイルすると、idプロパティとclazzプロパティが圧縮されているため、これは失敗します。
Google Closureコンパイラを使用して構成オブジェクトを実装およびエクスポートするための洗練された方法を知っている人はいますか?