如何编译不使用 children 的 Reason JSX 函数

How to compile Reason JSX functions that don't use children

[注意:我指的是纯 Reason JSX 函数 不是 Reason React PPX]

给定一个不使用 children 的 JSX 函数:

let f = (~foo, ~children, ()) => foo;
<f foo="a" />;

试图用 dune build 编译它会产生这个错误,这似乎阻止了可执行文件的创建:

line 1, characters 16-24:
Warning 27: unused variable children.
File "hello_world.re", line 1:
Error: Some fatal warnings were triggered (1 occurrences)

用下划线将 children 参数标记为未使用:

let f = (~foo, ~_children, ()) => foo;
<f foo="a" />;

从 JSX 调用中产生关于期望 children 的错误:

line 2, characters 7-10:
Error: This expression has type bytes but an expression was expected of type
         children:'a -> 'b

有没有办法编译不使用 children 的 JSX 函数?

将其设为可选参数行得通吗?

let f = (~foo, ~children=?, ()) => foo;
<f foo="a"/>

问题是 ~_children 不仅在内部重命名参数并将其标记为未使用,而且还在外部重命名。所以 ~children 不再是函数签名的一部分。

相反,您应该使用 as 在内部重命名它,这仍然会将其标记为未使用:

let f = (~foo, ~children as _children, ()) => foo;