This module implements the Property Descriptor.
The Property Descriptor type is used to explain the manipulation and reification of Object property attributes. Values of the Property Descriptor type are Records. Each field's name is an attribute name and its value is a corresponding attribute value as specified in 18.104.22.168. In addition, any field may be present or absent. The schema name used within this specification to tag literal descriptions of Property Descriptor records is “PropertyDescriptor”.
An accessor descriptor is a property described by a getter-setter pair of functions.
This struct constains the property flags as describen in the ECMAScript specification.
A data descriptor is a property that has a value, which may or may not be writable.
This abstracts away the need for IsPropertyKey by transforming the PropertyKey values into an enum with both valid types: String and Symbol