Reflect.hasField 对比 anon.field

Reflect.hasField vs anon.field

我正在为 API 编写一个验证库,我需要检查必填字段的匿名数据结构。直接引用字段 (if(anon.field)...) 是否安全,或者这会导致静态目标出现问题吗? Reflect.hasField 和直接字段访问之间有速度差异吗?

两种检查的目的不同。如果该字段已经 定义 ,您可以执行 if (anon.field == null)。因此,如果该字段不在结构中或不确定(例如,如果您在 typedef 中使用 @:optional 字段),您可能会遇到运行时错误。

这就是 Reflect.hasField 的用武之地;它将检查它是否确实被定义。所以如果一个结构有一个字段,你可以检查它上面的任何东西。

如果您的目标是 Javascript,则 Reflect.hasFieldObject.hasOwnProperty 的作用相同。

Reflect Api docs: http://api.haxe.org/Reflect.html#hasField