2

假设我定义了以下类型:

type queueParams = {
  durable: bool
};

class type amqpChannelT = [@bs] {
  pub assertQueue: string => queueParams => Js.Promise.t(unit);
};

然后调用以下命令:

channel##assertQueue("exampleQueue", {"durable": bool});

结果是:

This has type:
    {. "durable": bool}
  But somewhere wanted:
    queueParams (defined as

我怎样才能传递正确类型的东西?为什么我传递的东西不是记录?那个点符号的含义是什么?

4

1 回答 1

5

ReasonML 对这两者的解释不同:

let jsObject = {"durable": true};
let reasonRecord = {durable: true};

基本上,用双引号括起来的键是特殊 Javascript 对象类型的简写符号Js.t('a)- 目前已弃用。

你可以在这里玩一个例子。请注意这两种类型在转换为 Javascript 时的处理方式不同。

在此处阅读有关不推荐使用的语法的更多信息:

https://bucklescript.github.io/docs/en/object-deprecated

于 2018-07-08T09:10:40.537 回答