ReasonML周期依赖性

我正在研究基于this project绑定到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";
};

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

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

yifei86935 回答:ReasonML周期依赖性

选项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";
};
本文链接:https://www.f2er.com/2939598.html

大家都在问