重写记录:键为数组



在Rescript中,可以用以下格式定义Record

type record1 = {
a : String
}

不是

type record2 = {
[a] : String
}

我想写一个编译到JS的记录,比如:

{
[Op.or]: [12,13]
}

上面的用例来自Sequelize,参考文献在这里。

我的当前解决方案

%raw(`{[Op.or]:[12,13]}`)

目前还不完全清楚您打算如何与Op构造接口,是否可以绑定到它,但这里有一个例子可以做到,并且与Js.Dict.t一起有效地产生相同的输出:

module Op = {
@val external or: string = "Op.or"
}
Js.Dict.fromList(list{
(Op.or, [12, 23])
})

然而,它不会直接编译到您想要的JS,如果您依赖于实际解析源代码的东西,这可能会成为一个问题。但除此之外,我相信这应该符合你的要求。

最新更新