Библиотека привязок: возвращение нетипизированного объекта - определение метода

Часть библиотеки, которую я пытаюсь связать, возвращает объект -

Editor.prototype.getHandlers = function() {
  return {
    'shape.append': require('./draw/AppendShapeHandler'),
    'shape.create': require('./draw/CreateShapeHandler')
  };
};

Я не могу понять, как указать тип класса, так как возвращаемый объект является анонимным:

class type editor = object
  method getHandlers : ? Js.t Js.opt Js.meth
end

Может ли кто-нибудь предложить путь вперед здесь?

Спасибо

Ник

1 ответ

Решение

Для этого случая, возможно, что-то вроде:

class type editor = object
  method getHandlers : <shape_append : Js.js_string Js.t Js.meth> Js.t Js.meth
end

Еще пример:

class type server = object
  method listen : int -> (unit -> unit) Js.callback -> unit Js.meth
  method close : (unit -> unit) Js.callback -> unit Js.meth
  method address :
            <address: Js.js_string Js.t Js.readonly_prop;
             family : Js.js_string Js.t Js.readonly_prop;
             port: Js.js_string Js.t Js.readonly_prop> Js.t Js.meth
end

Этот подход связывания таким образом работает, но, как я узнал из моих привязок к узлу OCaml, лучше писать на более высоком уровне, чем делать эти привязки. https://github.com/fxfactorial/ocaml-nodejs (посмотрите в ранней истории git еще много подобных примеров)

Другие вопросы по тегам