Bs.deriving Абстрактная функция получения возвращает неопределенное значение при использовании заглавных имен - PullRequest
0 голосов
/ 24 января 2019

В примере с документом bulescript для bs.deriving abstract вы можете получить свойство созданного вами объекта с помощью 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);

Если вы измените его на заглавную, как показано ниже, ваш сгенерированный получатель станет _NameGet():

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

Во втором примере значение имени возвращается неопределенным. Как это можно исправить? пример в repl: tryreason

1 Ответ

0 голосов
/ 24 января 2019

Используйте [bs.as] для псевдонима ключа.Очевидно, это не изменит имя получателя, которое останется _NameGet в этом случае, но значение больше не будет возвращаться неопределенным.

[@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);

output: John

docs: переименование полей

...