【问题标题】:Capitalized field name in record记录中的大写字段名称
【发布时间】:2018-03-29 14:01:27
【问题描述】:

是否可以用大写的字段名制作记录?

类似:

[@bs.deriving jsConverter]
type coordinates = {
  X: int,
  Y: int
};

我问的原因是因为我正在与之交互的 js 对象具有大写的键。

这是将记录转换为bucklescript js对象的链接:

https://bucklescript.github.io/docs/en/generate-converters-accessors.html#convert-between-jst-object-and-record

【问题讨论】:

  • Glenn 的回答是 Reason 中的最新技术,但只要知道如果您不需要不可变的更新语法,您可能不需要记录。另一种方法是使用 Js.t({something}) 对象类型,它将与 JS 完美交互,无需任何转换。

标签: javascript-objects record reason bucklescript


【解决方案1】:

可以在字段前加下划线,在生成的JS中会去掉:

[@bs.deriving jsConverter]
type coordinates = {
  _X: int,
  _Y: int
};

Documentation

也就是说,我不确定依赖 jsConverter 进行 JS 互操作是个好主意,因为它非常有限且不可推广。虽然这种破坏在这里也发生了,但这似乎更像是一个巧合。

【讨论】:

  • 再次感谢!虽然不理想,但我现在还是想试试。我喜欢使用记录,但我发现编写转换器有点烦人……这可能会在以后咬我。
猜你喜欢
  • 2019-07-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-17
  • 1970-01-01
  • 2013-05-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多