【问题标题】:Rescript Record: Key as ArrayRescript Record: Key as Array
【发布时间】:2021-08-17 15:42:49
【问题描述】:

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

type record1 = {
   a : String
}

不是

type record2 = {
   [a] : String
}

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

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

以上用例来自Sequelize,参考为here

我的当前解决方案

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

【问题讨论】:

  • 它们被称为计算属性,除了共享一些词法标记之外,它们与数组无关。据我所知,使用%raw 的唯一替代方法是使用@set_index
  • 你也可以使用Js.Dict.t,假设键是字符串。

标签: reason rescript


【解决方案1】:

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

module Op = {
  @val external or: string = "Op.or"
}

Js.Dict.fromList(list{
  (Op.or, [12, 23])
})

它不会直接编译成你想要的 JS,但是,如果你依赖于真正解析源代码的东西,这可能是个问题。但除此之外,我相信这应该可以满足您的要求。

【讨论】:

    猜你喜欢
    • 2011-03-19
    • 2011-08-16
    • 1970-01-01
    • 2010-11-16
    • 2022-01-05
    • 1970-01-01
    • 2021-04-20
    • 2013-08-31
    • 2022-12-02
    相关资源
    最近更新 更多