2
我的Javascript UI對象是這樣的:使用Javascript - 谷歌關閉標註屬性類型
function MyUIElement() {
div = document.createElement("div");
div.id = "my_element_x";
div.innerHTML = "whatever";
...
this.hide = function() {
div.style.display = "none";
};
this.show = function() {
div.style.display = "block";
};
this.showData = function(data) {
...
}
this.div = div;
}
function addUIElement(element) {
app_div.appendChild(element);
}
myElement = new MyUIElement();
addUIElement(myElement.div)
我注意到Closure編譯器不知道myElement.div的類型,所以我加了一個類型吧:
function MyUIElement = {
/**
* @type {Element}
*/
div = document.createElement("div");
div.id = "my_element_x";
div.innerHTML = "whatever";
...
但它仍然不知道類型。我必須註釋「this.div = div」才能識別類型。
我只是想知道這種情況的最佳/通用解決方案是什麼。我是否應該使用this.div來訪問我的div,以避免註釋兩次?有沒有其他方式我應該控制MyUIElement類的公共/私有變量?
修正它們,謝謝。仍然與我的問題無關。 – user3117610
它在我編譯簡單和高級的片段時起作用,所以最新的問題是什麼?你仍然有一個全局變量'div'。嘗試'var div = this.div = ...',我假設你使用高級補償正確嗎? – megawac
'@ expose'現在已被棄用。作者應該將他們的代碼遷移到使用'@ export'來代替。 –