1

バインドしようとしているライブラリの一部がオブジェクトを返します -

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

誰かがここで前進する方法を提案できますか?

ありがとう

ニック

4

1 に答える 1

0

この場合、おそらく次のようになります。

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 nodejs バインディングで学んだように、これらのバインディングを行うよりも、より高いレベルで記述する方が適切です。https://github.com/fxfactorial/ocaml-nodejs (このような他の多くの例については、初期の git 履歴を参照してください)

于 2016-03-17T22:59:48.890 に答える