При определении привязки «причина-реакция» я хочу знать, как я могу определить привязку, которая принимает несколько типов. Например, у меня есть аргумент ~value
, который должен принимать: string
, number
, array(string)
или array(number)
. На данный момент я использую option('a)
, но я не думаю, что это самый чистый подход, поскольку я бы предпочел явно определять тип. Как это может быть сделано? Я просмотрел bs.unwrap
, но не знаю, как объединить внешний синтаксис в сигнатуру функции.
module Select = {
[@bs.module "material-ui/Select"] external reactClass : ReasonReact.reactClass = "default";
let make =
(
...
~menuProps: option(Js.t({..}))=?,
~value: option('a), /* Should be type to string, number, Array of string and Array of number */
~style: option(ReactDOMRe.style)=?,
...
children
) =>
ReasonReact.wrapJsForReason(
~reactClass,
~props=
Js.Nullable.(
{
...
"value": from_opt(value),
"style": from_opt(style)
}
),
children
);
};
В качестве побочного вопроса, поскольку числовой тип не определен, моя привязка также должна отображать числа с плавающей запятой и целое число?
float
иint
представлены как jsnumber
, так что технически вы можете обойтись простым использованиемfloat
, но вы, вероятно, захотите использовать оба для удобства. - person glennsl   schedule 08.11.2017