попробуйте, connection##createChannel()
если он исходит от JS.
Компилятор считает, что соединение - это запись, когда вы используете . сбруя
Скажем, у меня есть следующие типы Bucklescript:
type amqp;
[@bs.val] external amqpLib: amqp = "Amqp";
[@bs.module] external amqplib : amqp = "";
class type amqpConnectionT =
[@bs]
{
pub createChannel: unit => unit;
pub close: unit => unit
};
type amqpConnection = Js.t(amqpConnectionT);
let make = () => amqplib;
[@bs.send] external connect : (amqp, string) => Js.Promise.t(amqpConnection) = "";
let connectAmqp = (input: string, amqpClient: amqp) : Js.Promise.t(amqpConnection) => connect(amqpClient, input);
let makeConnection = (input) => make() |> connectAmqp(input, _);
а затем следующий код:
let start = () =>
Amqp.makeConnection("amqp://localhost")
|> Js.Promise.then_(connection => {
Js.log(connection);
connection.createChannel();
Js.Promise.resolve(connection);
});
start();
Это не удается:
The record field createChannel can't be found.
Зачем? Как неправильная аннотация для моего типа?
И каков правильный способ разоблачения методов-членов в ReasonML?
javascript,types,ocaml,reason,bucklescript,