有没有办法在闭包编译器的键入语法中定义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