在bs.deriving抽象的扣脚本文档示例中,您可以使用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
答案 0 :(得分:0)
使用[bs.as]作为键名的别名。显然,这不会更改将保留为_NameGet
的getter的名称,但该值不再返回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
docs:renaming fields