Bs.deriving 摘要 getter 函数 returns 使用大写名称时未定义

Bs.deriving Abstract getter function returns undefined when using capital names

在 bs.deriving 摘要的 bucklescript 文档示例中,您可以在使用 nameGet()

创建的对象上获取 属性

这个有效:

@bs.deriving abstract]
type person = {
  name: string,
  age: int,
  job: string,
};
let joe = person(~name="Joe", ~age=20, ~job="teacher");
let name = nameGet(joe);

如果您将其更改为大写名称键,如下所示,您生成的 getter 将变为 _NameGet():

type person = {
  _Name: string,
  age: int,
  job: string,
};
let joe = person(~_Name="Joe", ~age=20, ~job="teacher");
let name = _NameGet(joe);

在第二个示例中,名称值返回未定义。这怎么能解决? repl 中的示例:tryreason

使用[bs.as] 为键名起别名。这显然不会更改 getter 的名称,在这种情况下它将保持 _NameGet 但值不再 returns undefined.

[@bs.deriving abstract]
type person2 = {
  [@bs.as "Name"]
  _Name: string,
  age: int,
  job: string,
};

let john = person2(~_Name="John", ~age=20, ~job="teacher")
let namejohn = _NameGet(john);
Js.log(namejohn);

输出:John

文档:renaming fields