Using eslint with React configurations I get an error when using Object.defineProperty
. The error says:
Avoid using
Object.defineProperty
, instead useReflect.defineProperty
. (prefer-reflect)
On the eslint documentation of prefer-reflect they say it's deprecated, the reason being:
The original intent of this rule now seems misguided as we have come to understand that
Reflect
methods are not actually intended to replace theObject
counterparts the rule suggests, but rather exist as low-level primitives to be used with proxies in order to replicate the default behavior of various previously existing functionality.
Then my question is: is there any advantage in using Reflect.defineProperty
instead of Object.defineProperty
?
There is a slight difference between Object.defineProperty
and Reflect.defineProperty
: the former returns the target object and throws an exception when the descriptor could not be applied (e.g. when the property is non-writable or non-configurable or when the object is non-extensible), while the latter does return a boolean value whether it worked.
I'd argue that this makes Object.defineProperty
a bit more useful, unless you're implementing a defineProperty
proxy trap.