有没有办法在闭包编译器的输入语法中定义recursive type?换句话说,我可以在其定义中定义一个包含自身的类型吗?
/**
* A node on the tree.
* @type {{left: (Tree|null)}}
*/
var Tree = {
left: null
};
(旁注:是的,这个树的定义是错误的)
虽然上面的编译使用简单的优化,但它会因高级抛出以下错误而失败:
JSC_TYPE_PARSE_ERROR:错误类型注释。第3行第17行的未知类型树 * @type {{left:(Tree | null)}}
答案 0 :(得分:0)
只是一个猜测,但你可以把类型放在左边部分。
/**
* Not sure what goes here
*/
var Tree = {
/**
* @type {Tree}
*/
left: null
};
您也不需要类型
的构造函数/**
* @constructor
*/
var Tree = function(){
this.left = new Tree()
};
/**
* @type {Tree}
*/
Tree.prototype.left = null;
您知道,如果使用
实例化类型,您现在可以获得无限递归var test = new Tree();
答案 1 :(得分:0)
/ ** * @typedef {{left:Tree}} * / var Tree;
或
/ ** * @interface * / var Tree = function(){}
/ ** @type {Tree} * / Tree.prototype.left;