Hi @Anonymous ,
The way you've found out seems to work. Since the value (raw) "null" doesn't tell if the customizer set the property or not, I am not aware of another way to implement your requirement, but this could work by hazard for now, you're right.
In my components I don't rely on the fact that the customizer set an extra property or not. I prefer to define another property of type "Enum", where the customized defines how the control should work.
For instance, the control for a metadata autocomplete, lets the user decide if he/she wants it to perform as an "Entity" or an "Attribute" autocomplete. If it's an "Attribute", then I consider the parameter "entityName".
Maybe you know about this already, but in case it helps you design your component, here is the definition of the properties in my manifest:
<property name="controlValue" ... of-type="SingleLine.Text" usage="bound" required="true" />
<property name="behavior" ... of-type="Enum" usage="input" required="true">
<value name="Entity" display-name-key="Entity" description-key="Entity names" default="true">Entity</value>
<value name="Attribute" display-name-key="Attribute" description-key="Attributes for an entity" >Attribute</value>
</property>
<property name="entityName" ... of-type="SingleLine.Text" usage="input" required="false" />
Best regards,
Diana