有沒有辦法在閉包編譯器的鍵入語法中定義recursive type?換句話說,我可以定義一個包含其定義的類型嗎?閉包編譯器中的遞歸類型
/**
* A node on the tree.
* @type {{left: (Tree|null)}}
*/
var Tree = {
left: null
};
(邊注:是的,樹的這個定義是錯誤的)
雖然上面有簡單的優化編譯,它無法與先進拋出以下錯誤:
JSC_TYPE_PARSE_ERROR: Bad type annotation. Unknown type Tree at line 3 character 17 * @type {{left: (Tree|null)}}
呵呵。顯然我完全誤解@type參數的工作原理,謝謝! (另外,我認爲這個想法是簡單地定義一個有效的構造,而不是編寫可執行代碼:this.left在構造函數中應該爲null ...然後再次,我是一個簡單的語法的絆腳石) – Casey
好吧,很希望它有助於。 – Ally
此外,我不使用'Tree.prototype.left = new Tree()'的原因是因爲如果你這樣做,那麼你創建的每個對象都是類型樹,'left'屬性將始終引用同一個實例樹。通過在構造函數中實例化它,每次實例化一個新類型時,都會爲'left'屬性獲得一個新的Tree實例。希望我沒有把這個解釋比它需要的更復雜。 – Ally