Abr*_*m P 2 ocaml record reason bucklescript
假设我定义了以下类型:
type queueParams = {
durable: bool
};
class type amqpChannelT = [@bs] {
pub assertQueue: string => queueParams => Js.Promise.t(unit);
};
Run Code Online (Sandbox Code Playgroud)
然后调用以下内容:
channel##assertQueue("exampleQueue", {"durable": bool});
Run Code Online (Sandbox Code Playgroud)
结果是:
This has type:
{. "durable": bool}
But somewhere wanted:
queueParams (defined as
Run Code Online (Sandbox Code Playgroud)
我怎样才能传递正确的东西?为什么我传递的东西不是记录?点符号的含义是什么?
ReasonML以不同的方式解释这两个:
let jsObject = {"durable": true};
let reasonRecord = {durable: true};
Run Code Online (Sandbox Code Playgroud)
基本上,使用双引号包装键是特殊Javascript对象类型的简写符号Js.t('a)
- 目前已弃用.
你可以在这里玩一个例子.请注意转换为Javascript时如何区别对待这两种类型.
在此处阅读有关已弃用语法的更多信息:
https://bucklescript.github.io/docs/en/object-deprecated