Вам нужно указать пространство имён. В OCaml / Reason метод пространств имен состоит в том, чтобы поместить их в отдельные модули. В частности,
module ObjA = {
[@bs.deriving abstract] type t = {
prop1: string,
prop2: string,
prop3: string,
};
[@bs.module "myLib"] external get: (unit) => t = "getObjA";
};
module ObjB = {
[@bs.deriving abstract] type t = {
prop2: string,
prop4: string,
};
[@bs.module "myLib"] external get: (unit) => t = "getObjB";
};
Теперь средства доступа также имеют пространство имен по модулю их типа:
() |> ObjA.get |> ObjA.prop2Get |> Js.log;
Приятно то, что поскольку имя модуля используется как часть общего имени, вам не нужно повторять что-то в именах, например getObjA
, getObjB
.