ReasonML周期依赖性

伊万

我正在基于该项目开发一个绑定到leafletjs的扣脚本

使用传单时,地图具有添加图层的功能,而图层具有将自身添加至地图的功能。

这就是我要使用ReasonML实现的目标:

module Map = {
    type t;
    [@bs.send] external addLayer : (t, Layer.t) => t = "addLayer";
};

module Layer = {
    type t;
    [@bs.send] external addTo : Map.t => unit = "addTo";
};

不幸的是,我收到一个未绑定的模块层错误。

如何使编译器知道以下所述的类型?

格伦斯

选项1:在通用模块中定义类型并为其加上别名:

type map;
type layer;

module Map = {
    type t = map;
    [@bs.send] external addLayer : (t, layer) => t = "addLayer";
};

module Layer = {
    type t = layer;
    [@bs.send] external addTo : map => unit = "addTo";
};

选项2:使模块相互递归:

module rec Map : {
    type t;
    [@bs.send] external addLayer : (t, Layer.t) => t = "addLayer";
} = {
    type t;
    [@bs.send] external addLayer : (t, Layer.t) => t = "addLayer";
}

and  Layer : {
    type t;
    [@bs.send] external addTo : Map.t => unit = "addTo";
} = {
    type t;
    [@bs.send] external addTo : Map.t => unit = "addTo";
};

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章